openwrt-owl/target/linux/s3c24xx/patches-2.6.24/1232-change-backlight-level...

87 lines
2.9 KiB
Diff

From db07519c1dfe916bcf9644bfdc4d7c03707a979e Mon Sep 17 00:00:00 2001
From: Andy Green <andy@openmoko.com>
Date: Tue, 15 Jul 2008 09:04:05 +0100
Subject: [PATCH] change-backlight-level-not-forced-up-on-resume.patch
We at least always enabled backlight on resume, this patch
changes us to set backlight back to last requested backlight
brightness level on resume. Note it means that you can
resume with screen blanked, but it should come back if that
happened with touchscreen action as usual.
/sys/class/backlight/pcf50633-bl/actual_brightness
and
/sys/class/backlight/pcf50633-bl/brightness
seem to agree after resume when reportedly they didn't before.
Signed-off-by: Andy Green <andy@openmoko.com>
---
drivers/i2c/chips/pcf50633.c | 29 +++++++++++++++--------------
1 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/drivers/i2c/chips/pcf50633.c b/drivers/i2c/chips/pcf50633.c
index 9f98ba1..f461378 100644
--- a/drivers/i2c/chips/pcf50633.c
+++ b/drivers/i2c/chips/pcf50633.c
@@ -1878,22 +1878,14 @@ 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);
int ret;
- dev_info(&pcf->client.dev, "pcf50633bl_set_intensity\n");
-
if (!(reg_read(pcf, PCF50633_REG_LEDENA) & 1))
old_intensity = 0;
- if ((bd->props.power != FB_BLANK_UNBLANK) ||
- (bd->props.fb_blank != FB_BLANK_UNBLANK))
- intensity = 0;
-
/*
* The PCF50633 cannot handle LEDOUT = 0 (datasheet p60)
* if seen, you have to re-enable the LED unit
@@ -1919,6 +1911,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,
@@ -2508,11 +2512,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);
--
1.5.6.5