diff options
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/chips/pcf50633.c | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/drivers/i2c/chips/pcf50633.c b/drivers/i2c/chips/pcf50633.c index 1074b946d64..fea2f38d810 100644 --- a/drivers/i2c/chips/pcf50633.c +++ b/drivers/i2c/chips/pcf50633.c @@ -1874,16 +1874,12 @@ static int pcf50633bl_get_intensity(struct backlight_device *bd) return intensity & 0x3f; } -static int pcf50633bl_set_intensity(struct backlight_device *bd) +static int __pcf50633bl_set_intensity(struct pcf50633_data *pcf, int intensity) { - struct pcf50633_data *pcf = bl_get_data(bd); - int intensity = bd->props.brightness; int old_intensity = reg_read(pcf, PCF50633_REG_LEDOUT); u_int8_t ledena = 2; int ret; - dev_info(&pcf->client.dev, "pcf50633bl_set_intensity\n"); - if (!(reg_read(pcf, PCF50633_REG_LEDENA) & 1)) old_intensity = 0; @@ -1891,7 +1887,8 @@ static int pcf50633bl_set_intensity(struct backlight_device *bd) (bd->props.fb_blank != FB_BLANK_UNBLANK)) intensity = 0; - /* The PCF50633 cannot handle LEDOUT = 0 (datasheet p60) + /* + * The PCF50633 cannot handle LEDOUT = 0 (datasheet p60) * if seen, you have to re-enable the LED unit */ @@ -1912,6 +1909,18 @@ static int pcf50633bl_set_intensity(struct backlight_device *bd) return ret; } +static int pcf50633bl_set_intensity(struct backlight_device *bd) +{ + struct pcf50633_data *pcf = bl_get_data(bd); + int intensity = bd->props.brightness; + + if ((bd->props.power != FB_BLANK_UNBLANK) || + (bd->props.fb_blank != FB_BLANK_UNBLANK)) + intensity = 0; + + return __pcf50633bl_set_intensity(pcf, intensity); +} + static struct backlight_ops pcf50633bl_ops = { .get_brightness = pcf50633bl_get_intensity, .update_status = pcf50633bl_set_intensity, @@ -2501,11 +2510,8 @@ void pcf50633_backlight_resume(struct pcf50633_data *pcf) /* platform defines resume ramp speed */ reg_write(pcf, PCF50633_REG_LEDDIM, pcf->pdata->resume_backlight_ramp_speed); - reg_write(pcf, PCF50633_REG_LEDOUT, pcf->standby_regs.misc[ - PCF50633_REG_LEDOUT - PCF50633_REG_AUTOOUT]); - /* we force the backlight on in fact */ - reg_write(pcf, PCF50633_REG_LEDENA, pcf->standby_regs.misc[ - PCF50633_REG_LEDENA - PCF50633_REG_AUTOOUT] | 1); + + __pcf50633bl_set_intensity(pcf, pcf->backlight->props.brightness); } EXPORT_SYMBOL_GPL(pcf50633_backlight_resume); |