summaryrefslogtreecommitdiff
path: root/drivers/video
diff options
context:
space:
mode:
authorPaul Parsons <lost.distance@yahoo.com>2012-06-03 10:33:52 (GMT)
committerFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>2012-07-08 14:03:02 (GMT)
commitfb18155925139caef33f5c2d0e60316c3c9c1aac (patch)
tree83b5698a88601b896e3552cb74a6142ecbdb1b7d /drivers/video
parentd65c8f312c7a7e0b14db8f361cc692a263025bf5 (diff)
downloadlinux-fb18155925139caef33f5c2d0e60316c3c9c1aac.tar.xz
video: w100fb: Reduce sleep mode battery discharge
In 2006 and 2007 the handhelds.org kernel w100fb driver was patched to reduce sleep mode battery discharge. Unfortunately those two patches never migrated to the mainline kernel. Fortunately the function affected - w100_suspend() - has not changed since; thus those patches still apply cleanly. Applying those patches to linux-3.4-rc3 running on an HP iPAQ hx4700 reduces the sleep mode battery discharge from approximately 26 mA to approximately 11 mA. This patch combines those two patches into a single unified patch. Signed-off-by: Paul Parsons <lost.distance@yahoo.com> Cc: Matt Reimer <mreimer@sdgsystems.com> Cc: Philipp Zabel <philipp.zabel@gmail.com> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/w100fb.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/video/w100fb.c b/drivers/video/w100fb.c
index 90a2e30..2f6b2b8 100644
--- a/drivers/video/w100fb.c
+++ b/drivers/video/w100fb.c
@@ -1567,6 +1567,18 @@ static void w100_suspend(u32 mode)
val = readl(remapped_regs + mmPLL_CNTL);
val |= 0x00000004; /* bit2=1 */
writel(val, remapped_regs + mmPLL_CNTL);
+
+ writel(0x00000000, remapped_regs + mmLCDD_CNTL1);
+ writel(0x00000000, remapped_regs + mmLCDD_CNTL2);
+ writel(0x00000000, remapped_regs + mmGENLCD_CNTL1);
+ writel(0x00000000, remapped_regs + mmGENLCD_CNTL2);
+ writel(0x00000000, remapped_regs + mmGENLCD_CNTL3);
+
+ val = readl(remapped_regs + mmMEM_EXT_CNTL);
+ val |= 0xF0000000;
+ val &= ~(0x00000001);
+ writel(val, remapped_regs + mmMEM_EXT_CNTL);
+
writel(0x0000001d, remapped_regs + mmPWRMGT_CNTL);
}
}