Subject: [PATCH 2/2] backlight: Fix blanking for L4F00242T03 LCD

From: [email-masked] (Alberto Panizzo)
Date: Fri, 04 Jun 2010 09:29:43 +0200

On ven, 2010-06-04 at 07:52 +0200, Marek Vasut wrote:
> The LCD was turned on if the variable power was > 0, but that was incorrect. The
> LCD has to be turned on in every case but POWERDOWN.
> 
> Signed-off-by: Marek Vasut <[email-masked]>

Ack

> ---
>  drivers/video/backlight/l4f00242t03.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/video/backlight/l4f00242t03.c b/drivers/video/backlight/l4f00242t03.c
> index 9093ef0..ac20b2e 100644
> --- a/drivers/video/backlight/l4f00242t03.c
> +++ b/drivers/video/backlight/l4f00242t03.c
> @@ -78,7 +78,7 @@ static int l4f00242t03_lcd_power_set(struct lcd_device *ld, int power)
>  	const u16 slpin = 0x10;
>  	const u16 disoff = 0x28;
>  
> -	if (power) {
> +	if (power < FB_BLANK_POWERDOWN) {
>  		if (priv->lcd_on)
>  			return 0;
>  

lcd.h states:
struct lcd_ops {
	/* Get the LCD panel power status (0: full on, 1..3: controller
	   power on, flat panel power off, 4: full off), see FB_BLANK_XXX */
	int (*get_power)(struct lcd_device *);
	/* Enable or disable power to the LCD (0: on; 4: off, see FB_BLANK_XXX) */
	int (*set_power)(struct lcd_device *, int power);

AFAIK the gray area between FB_BLANK_NORMAL and FB_BLANK_HSYNC_SUSPEND
can be chosen as needs.

Why not:

+ #define POWER_IS_ON(pwr)	((pwr) <= FB_BLANK_NORMAL)

...

-	if (power) {
+	if (POWER_IS_ON(power)) {
 		if (priv->lcd_on)
 			return 0;

So with FB_BLANK_NORMAL the lcd is active and on -> low latencies
in re-enabling the video out, but for !POWER_IS_ON(power) we will send  
the lcd to standby.

It have to be implemented for power == FB_BLANK_POWERDOWN to turn off the 
regulators of the lcd.

What do you think about?

Regards,

-- 
Alberto!

        Be Persistent!
                - Greg Kroah-Hartman (FOSDEM 2010)