diff options
author | Marek Vasut <marek.vasut@gmail.com> | 2009-03-28 12:37:42 +0100 |
---|---|---|
committer | Eric Miao <eric.miao@marvell.com> | 2009-04-04 10:26:34 +0800 |
commit | 81854f82c5c1a203b2f5c94f6aa2ed8b8e19f025 (patch) | |
tree | 2eac472ee815f31cfeca6ab396c6cd6347dc2871 /arch/arm/mach-pxa/palmt5.c | |
parent | 8c8aa5fa3060abc17e8a07d15f575485f6a0c0b8 (diff) | |
download | linux-81854f82c5c1a203b2f5c94f6aa2ed8b8e19f025.tar.gz linux-81854f82c5c1a203b2f5c94f6aa2ed8b8e19f025.tar.bz2 linux-81854f82c5c1a203b2f5c94f6aa2ed8b8e19f025.zip |
[ARM] pxa: Add support for suspend on PalmTX, T5 and LD
Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
Diffstat (limited to 'arch/arm/mach-pxa/palmt5.c')
-rw-r--r-- | arch/arm/mach-pxa/palmt5.c | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/arch/arm/mach-pxa/palmt5.c b/arch/arm/mach-pxa/palmt5.c index 9521c7b33492..0680f1a575a3 100644 --- a/arch/arm/mach-pxa/palmt5.c +++ b/arch/arm/mach-pxa/palmt5.c @@ -75,10 +75,10 @@ static unsigned long palmt5_pin_config[] __initdata = { GPIO95_GPIO, /* usb power */ /* MATRIX KEYPAD */ - GPIO100_KP_MKIN_0, - GPIO101_KP_MKIN_1, - GPIO102_KP_MKIN_2, - GPIO97_KP_MKIN_3, + GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH, + GPIO101_KP_MKIN_1 | WAKEUP_ON_LEVEL_HIGH, + GPIO102_KP_MKIN_2 | WAKEUP_ON_LEVEL_HIGH, + GPIO97_KP_MKIN_3 | WAKEUP_ON_LEVEL_HIGH, GPIO103_KP_MKOUT_0, GPIO104_KP_MKOUT_1, GPIO105_KP_MKOUT_2, @@ -450,6 +450,33 @@ static struct pxafb_mach_info palmt5_lcd_screen = { }; /****************************************************************************** + * Power management - standby + ******************************************************************************/ +#ifdef CONFIG_PM +static u32 *addr __initdata; +static u32 resume[3] __initdata = { + 0xe3a00101, /* mov r0, #0x40000000 */ + 0xe380060f, /* orr r0, r0, #0x00f00000 */ + 0xe590f008, /* ldr pc, [r0, #0x08] */ +}; + +static int __init palmt5_pm_init(void) +{ + int i; + + /* this is where the bootloader jumps */ + addr = phys_to_virt(PALMT5_STR_BASE); + + for (i = 0; i < 3; i++) + addr[i] = resume[i]; + + return 0; +} + +device_initcall(palmt5_pm_init); +#endif + +/****************************************************************************** * Machine init ******************************************************************************/ static struct platform_device *devices[] __initdata = { |