-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Somebody in the thread at some point said:

> Maybe our next move should be to try 72Hz refresh by removing the
> needless blanking pixels from the frame and keeping everything else the
> same, if the LCM creates the flicker at some integer number of frames
> then we will increase the flicker frequency accordingly, maybe it will
> be less objectionable or transformed some other way.

I have done this in U-Boot with the attached patch, which provides 75Hz
refresh and the flicker is no longer visible on the 0xa00a 5:6:5 pattern.

Allen or anyone else please try the patch and see what you think.

- -Andy
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFH1SvuOjLpvpq7dMoRAohPAJ9x/Vbi8nHes3Bxt4D4z00zqewheQCghkYh
/XERAxAZk38P7ztm0Vg+HAE=
=KffR
-----END PGP SIGNATURE-----
debug-flicker.patch

From: Andy Green <[EMAIL PROTECTED]>

Bunch of meddlings to U-Boot video init that increases framerate to 72Hz
amongst many other experimental LCM things.  Seems to remove the flicker issue.

Signed-off-by: Andy Green <[EMAIL PROTECTED]>
---

 board/neo1973/common/jbt6k74.c |   24 +++++++++++++-----------
 drivers/video/smedia3362.c     |   15 +++++++++++----
 2 files changed, 24 insertions(+), 15 deletions(-)


diff --git a/board/neo1973/common/jbt6k74.c b/board/neo1973/common/jbt6k74.c
index e4c0332..10db3d3 100644
--- a/board/neo1973/common/jbt6k74.c
+++ b/board/neo1973/common/jbt6k74.c
@@ -228,11 +228,12 @@ static int jbt_init_regs(struct jbt_info *jbt)
 	rc |= jbt_reg_write(jbt, JBT_REG_DISPLAY_MODE2, 0x00);
 	rc |= jbt_reg_write(jbt, JBT_REG_RGB_FORMAT, 0x60);
 	rc |= jbt_reg_write(jbt, JBT_REG_DRIVE_SYSTEM, 0x10);
-	rc |= jbt_reg_write(jbt, JBT_REG_BOOSTER_OP, 0x56);
-	rc |= jbt_reg_write(jbt, JBT_REG_BOOSTER_MODE, 0x33);
-	rc |= jbt_reg_write(jbt, JBT_REG_BOOSTER_FREQ, 0x11);
-	rc |= jbt_reg_write(jbt, JBT_REG_BOOSTER_FREQ, 0x11);
-	rc |= jbt_reg_write(jbt, JBT_REG_OPAMP_SYSCLK, 0x02);
+	rc |= jbt_reg_write(jbt, JBT_REG_BOOSTER_OP, 0x00 /*0x56*/);
+	rc |= jbt_reg_write(jbt, JBT_REG_BOOSTER_MODE, 0x00 /*0x33*/);
+	rc |= jbt_reg_write(jbt, JBT_REG_BOOSTER_FREQ, 0x22 /*0x11*/);
+	rc |= jbt_reg_write(jbt, JBT_REG_BOOSTER_FREQ, 0x22 /*0x11*/);
+//	rc |= jbt_reg_write(jbt, JBT_REG_BOOSTER_FREQ, 0x11);
+	rc |= jbt_reg_write(jbt, JBT_REG_OPAMP_SYSCLK, 0x00 /*0x02*/);
 	rc |= jbt_reg_write(jbt, JBT_REG_VSC_VOLTAGE, 0x2b);
 	rc |= jbt_reg_write(jbt, JBT_REG_VCOM_VOLTAGE, 0x40);
 	rc |= jbt_reg_write(jbt, JBT_REG_EXT_DISPL, 0x03);
@@ -249,21 +250,22 @@ static int jbt_init_regs(struct jbt_info *jbt)
 	rc |= jbt_reg_write16(jbt, JBT_REG_SLEEP_IN_LCCNT_G, 0x60c0);
 
 	rc |= jbt_reg_write16(jbt, JBT_REG_GAMMA1_FINE_1, 0x5533);
-	rc |= jbt_reg_write(jbt, JBT_REG_GAMMA1_FINE_2, 0x00);
-	rc |= jbt_reg_write(jbt, JBT_REG_GAMMA1_INCLINATION, 0x00);
+	rc |= jbt_reg_write16(jbt, JBT_REG_GAMMA1_FINE_1, 0x3343);
+	rc |= jbt_reg_write(jbt, JBT_REG_GAMMA1_FINE_2, 0x44 /*0x00*/);
+	rc |= jbt_reg_write(jbt, JBT_REG_GAMMA1_INCLINATION, 0x33 /*0x00*/);
 	rc |= jbt_reg_write(jbt, JBT_REG_GAMMA1_BLUE_OFFSET, 0x00);
 	rc |= jbt_reg_write(jbt, JBT_REG_GAMMA1_BLUE_OFFSET, 0x00);
 
-	rc |= jbt_reg_write16(jbt, JBT_REG_HCLOCK_VGA, 0x1f0);
+	rc |= jbt_reg_write16(jbt, JBT_REG_HCLOCK_VGA, 0x1f0); /* 496 */
 	rc |= jbt_reg_write(jbt, JBT_REG_BLANK_CONTROL, 0x02);
 	rc |= jbt_reg_write16(jbt, JBT_REG_BLANK_TH_TV, 0x0804);
 	rc |= jbt_reg_write16(jbt, JBT_REG_BLANK_TH_TV, 0x0804);
 
-	rc |= jbt_reg_write(jbt, JBT_REG_CKV_ON_OFF, 0x01);
+	rc |= jbt_reg_write(jbt, JBT_REG_CKV_ON_OFF, 0x00 /*0x01*/);
 	rc |= jbt_reg_write16(jbt, JBT_REG_CKV_1_2, 0x0000);
 
-	rc |= jbt_reg_write16(jbt, JBT_REG_OEV_TIMING, 0x0d0e);
-	rc |= jbt_reg_write16(jbt, JBT_REG_ASW_TIMING_1, 0x11a4);
+	rc |= jbt_reg_write16(jbt, JBT_REG_OEV_TIMING, 0x050a /*0x0d0e*/);
+	rc |= jbt_reg_write16(jbt, JBT_REG_ASW_TIMING_1, 0x2864 /*0x11a4*/);
 	rc |= jbt_reg_write(jbt, JBT_REG_ASW_TIMING_2, 0x0e);
 
 #if 0
diff --git a/drivers/video/smedia3362.c b/drivers/video/smedia3362.c
index 170723f..81e2bd1 100644
--- a/drivers/video/smedia3362.c
+++ b/drivers/video/smedia3362.c
@@ -80,10 +80,10 @@ void smedia3362_lcm_reset(int b)
  * framebuffer
  */
 static u16 u16a_lcd_init[] = {
-	0x0020, 0x1020, 0x0B40, 0x01E0, 0x0280, 0x440C, 0x0000, 0x0000,
-	0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x0000, 0x0258, 0x0000,
-	0x0000, 0x0000, 0x0008, 0x0000, 0x0010, 0x0000, 0x01F0, 0x0000,
-	0x0294, 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0x0004, 0x0000,
+	0x1020 /* 0020 */, 0x1020, 0x0B40, 0x01E0, 0x0280, 0x440C, 0x0000, 0x0000,
+	0x0000, 0x0000, 0x0000, 0x0000, 0x03C0, 0x0000, 496 /*0x0258*/, 0x0000,
+	0x0000, 0x0000, 0x0008, 0x0000, 0x0010, 0x0000, 480+0x10, 0x0000,
+	0x0288, 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0x0004, 0x0000,
 	0x0284, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
 	0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
@@ -202,6 +202,13 @@ static void glamo_core_init(void)
 	for (bp = 0; bp < ARRAY_SIZE(u16a_lcd_init); bp++)
 		glamo_reg_write(GLAMO_REGOFS_LCD + (bp << 1),
 			u16a_lcd_init[bp]);
+
+	/* drive strength */
+	glamo_reg_write(GLAMO_REGOFS_LCD + 0x160, 0x3000);
+
+	/* gamma = 1 */
+	glamo_reg_write(GLAMO_REGOFS_LCD + 0x100, 0x0015);
+
 	glamofb_cmd_mode(0);
 }
 

Reply via email to