aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/i2c/chips/pcf50633.c28
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);