1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2025-04-21 12:27:27 +03:00

add support for target 3c24xx (more known as Openmoko GTA02 "Freerunner") and merge it with the openmoko-target and the work Michael Buesch <mb> did

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13609 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
mirko
2008-12-12 00:02:36 +00:00
parent 22b3854919
commit cc3146824a
268 changed files with 151304 additions and 133872 deletions

View File

@@ -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