diff options
author | Todd Poynor <tpoynor@com.rmk.(none)> | 2005-06-03 15:52:27 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2005-06-03 15:52:27 -0400 |
commit | 8775420d2fbcfff866995471ea5f6130d14d121c (patch) | |
tree | bef5911e6c02b5780a8d81e8db656177ff9b8c4a /arch/arm/mach-pxa/pxa25x.c | |
parent | 718a30a5cf0a9142f716a49853bd4b4a25a8da1b (diff) |
[PATCH] ARM: 2691/1: PXA27x sleep fixes take 2
Patch from Todd Poynor
PXA27x sleep fixes:
* set additional sleep/wakeup registers for Mainstone boards.
* move CKEN=0 to pxa25x-specific code; that value is harmful on pxa27x.
* save/restore additional registers, including some found necessary for
C5 processors and/or newer blob versions.
* enable future support of additional sleep modes for PXA27x (eg,
standby, deep sleep).
* split off cpu-specific sleep processing between pxa27x and pxa25x into
separate files (partly in preparation for additional sleep modes).
Includes fixes from David Burrage.
Signed-off-by: Todd Poynor
Signed-off-by: Nicolas Pitre
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-pxa/pxa25x.c')
-rw-r--r-- | arch/arm/mach-pxa/pxa25x.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c index e887b7175ef3..b6d945a6e774 100644 --- a/arch/arm/mach-pxa/pxa25x.c +++ b/arch/arm/mach-pxa/pxa25x.c | |||
@@ -102,3 +102,32 @@ unsigned int get_lcdclk_frequency_10khz(void) | |||
102 | } | 102 | } |
103 | 103 | ||
104 | EXPORT_SYMBOL(get_lcdclk_frequency_10khz); | 104 | EXPORT_SYMBOL(get_lcdclk_frequency_10khz); |
105 | |||
106 | |||
107 | int pxa_cpu_pm_prepare(suspend_state_t state) | ||
108 | { | ||
109 | switch (state) { | ||
110 | case PM_SUSPEND_MEM: | ||
111 | break; | ||
112 | default: | ||
113 | return -EINVAL; | ||
114 | } | ||
115 | |||
116 | return 0; | ||
117 | } | ||
118 | |||
119 | void pxa_cpu_pm_enter(suspend_state_t state) | ||
120 | { | ||
121 | extern void pxa_cpu_suspend(unsigned int); | ||
122 | extern void pxa_cpu_resume(void); | ||
123 | |||
124 | CKEN = 0; | ||
125 | |||
126 | switch (state) { | ||
127 | case PM_SUSPEND_MEM: | ||
128 | /* set resume return address */ | ||
129 | PSPR = virt_to_phys(pxa_cpu_resume); | ||
130 | pxa_cpu_suspend(3); | ||
131 | break; | ||
132 | } | ||
133 | } | ||