drivers/video/backlight/l4f00242t03.c: fix reset sequence
authorAlberto Panizzo <maramaopercheseimorto@gmail.com>
Thu, 13 Jan 2011 00:59:24 +0000 (16:59 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 13 Jan 2011 16:03:06 +0000 (08:03 -0800)
The reset command is part of the init sequence and it take effect
only if the lcd is powered.

The effect of the bug was that the sequence:
set lcd power_state to FB_BLANK_POWERDOWN
set lcd power_state to FB_BLANK_UNBLANK
Did not produced a complete reboot of the LCD which was showing fuzzy
colours.

This was not experienced before implementing correctly all the LCD power
states with the patch [1].  Since before the patch [1] the regulators were
not touched and the LCD shutdown was reached with a register write.  After
the patch [1] a complete boot sequence with an initial reset is needed for
the display every time the LCD is powered up.

drivers-video-backlight-l4f00242t03c-full-implement-fb-power-states-for-this-lcd.patch

Signed-off-by: Alberto Panizzo <maramaopercheseimorto@gmail.com>
Cc: Richard Purdie <rpurdie@rpsys.net>
Cc: Marek Vasut <marek.vasut@gmail.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/video/backlight/l4f00242t03.c

index 1fcaaf3d78e15fe7663762f3280738065603db64..98ad3e5f7c853cead7388f09e725e96c80a5e8ef 100644 (file)
@@ -62,6 +62,8 @@ static void l4f00242t03_lcd_init(struct spi_device *spi)
                regulator_enable(priv->core_reg);
        }
 
+       l4f00242t03_reset(pdata->reset_gpio);
+
        gpio_set_value(pdata->data_enable_gpio, 1);
        msleep(60);
        spi_write(spi, (const u8 *)cmd, ARRAY_SIZE(cmd) * sizeof(u16));
@@ -227,7 +229,6 @@ static int __devinit l4f00242t03_probe(struct spi_device *spi)
        }
 
        /* Init the LCD */
-       l4f00242t03_reset(pdata->reset_gpio);
        l4f00242t03_lcd_init(spi);
        priv->lcd_state = FB_BLANK_VSYNC_SUSPEND;
        l4f00242t03_lcd_power_set(priv->ld, FB_BLANK_UNBLANK);