diff options
author | mirko <mirko@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-12-13 01:54:56 +0000 |
---|---|---|
committer | mirko <mirko@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-12-13 01:54:56 +0000 |
commit | a95f9f92e2953d5829a29e95644dc4c4bc93f590 (patch) | |
tree | 01f2bf78edb2e3bb1466df9bca72e068632d0e74 /target/linux/s3c24xx/patches-2.6.26/1179-fix-pcf50633-really-defer-backlight-on-resume.patch.patch | |
parent | 9fa649271dbc9c83417488203aeb1668a0238c54 (diff) |
change prefix for kernelpatchbase 2.6.26
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13619 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/s3c24xx/patches-2.6.26/1179-fix-pcf50633-really-defer-backlight-on-resume.patch.patch')
-rwxr-xr-x | target/linux/s3c24xx/patches-2.6.26/1179-fix-pcf50633-really-defer-backlight-on-resume.patch.patch | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/target/linux/s3c24xx/patches-2.6.26/1179-fix-pcf50633-really-defer-backlight-on-resume.patch.patch b/target/linux/s3c24xx/patches-2.6.26/1179-fix-pcf50633-really-defer-backlight-on-resume.patch.patch new file mode 100755 index 0000000000..6c17c69ef6 --- /dev/null +++ b/target/linux/s3c24xx/patches-2.6.26/1179-fix-pcf50633-really-defer-backlight-on-resume.patch.patch @@ -0,0 +1,71 @@ +From 568981c881e20fccdbfffb073c3868dcdc012446 Mon Sep 17 00:00:00 2001 +From: Andy Green <andy@openmoko.com> +Date: Fri, 25 Jul 2008 23:06:15 +0100 +Subject: [PATCH] fix-pcf50633-really-defer-backlight-on-resume.patch + +Backlight wasn't off by default on resume, so it was never really +deferred (until LCM is initialized). This fixes that and so removes +the brief white screen between pcf50633 resume and LCM init. + +Signed-off-by: Andy Green <andy@openmoko.com> +--- + drivers/i2c/chips/pcf50633.c | 23 +++++++++++++++++------ + 1 files changed, 17 insertions(+), 6 deletions(-) + +diff --git a/drivers/i2c/chips/pcf50633.c b/drivers/i2c/chips/pcf50633.c +index 33c4ef4..bbc8ae6 100644 +--- a/drivers/i2c/chips/pcf50633.c ++++ b/drivers/i2c/chips/pcf50633.c +@@ -2474,13 +2474,14 @@ EXPORT_SYMBOL_GPL(pcf50633_ready); + + void pcf50633_backlight_resume(struct pcf50633_data *pcf) + { ++ dev_info(&pcf->client.dev, "pcf50633_backlight_resume\n"); ++ + /* we force the backlight on in fact */ +- __reg_write(pcf, PCF50633_REG_LEDOUT, pcf->standby_regs.misc[ ++ reg_write(pcf, PCF50633_REG_LEDDIM, 1); ++ reg_write(pcf, PCF50633_REG_LEDOUT, pcf->standby_regs.misc[ + PCF50633_REG_LEDOUT - PCF50633_REG_AUTOOUT]); +- __reg_write(pcf, PCF50633_REG_LEDENA, pcf->standby_regs.misc[ ++ reg_write(pcf, PCF50633_REG_LEDENA, pcf->standby_regs.misc[ + PCF50633_REG_LEDENA - PCF50633_REG_AUTOOUT] | 1); +- __reg_write(pcf, PCF50633_REG_LEDDIM, pcf->standby_regs.misc[ +- PCF50633_REG_LEDDIM - PCF50633_REG_AUTOOUT]); + } + EXPORT_SYMBOL_GPL(pcf50633_backlight_resume); + +@@ -2491,6 +2492,7 @@ static int pcf50633_resume(struct device *dev) + struct pcf50633_data *pcf = i2c_get_clientdata(client); + int ret; + u8 res[5]; ++ u8 misc[PCF50633_REG_LEDDIM - PCF50633_REG_AUTOOUT + 1]; + + dev_info(dev, "pcf50633_resume suspended on entry = %d\n", + (int)pcf->suspend_state); +@@ -2502,11 +2504,20 @@ static int pcf50633_resume(struct device *dev) + + __reg_write(pcf, PCF50633_REG_OOCTIM2, pcf->standby_regs.ooctim2); + ++ memcpy(misc, pcf->standby_regs.misc, sizeof(pcf->standby_regs.misc)); ++ ++ if (pcf->pdata->defer_resume_backlight) { ++ misc[PCF50633_REG_LEDOUT - PCF50633_REG_AUTOOUT] = 1; ++ misc[PCF50633_REG_LEDENA - PCF50633_REG_AUTOOUT] = 0x20; ++ misc[PCF50633_REG_LEDCTL - PCF50633_REG_AUTOOUT] = 1; ++ misc[PCF50633_REG_LEDDIM - PCF50633_REG_AUTOOUT] = 1; ++ } ++ + /* regulator voltages and enable states */ + ret = i2c_smbus_write_i2c_block_data(&pcf->client, + PCF50633_REG_AUTOOUT, +- sizeof(pcf->standby_regs.misc) - 4, +- &pcf->standby_regs.misc[0]); ++ sizeof(misc), ++ &misc[0]); + if (ret) + dev_err(dev, "Failed to restore misc :-( %d\n", ret); + +-- +1.5.6.3 + |