aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-pxa/pxa25x.c
diff options
context:
space:
mode:
authorTodd Poynor <tpoynor@com.rmk.(none)>2005-06-03 15:52:27 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2005-06-03 15:52:27 -0400
commit8775420d2fbcfff866995471ea5f6130d14d121c (patch)
treebef5911e6c02b5780a8d81e8db656177ff9b8c4a /arch/arm/mach-pxa/pxa25x.c
parent718a30a5cf0a9142f716a49853bd4b4a25a8da1b (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.c29
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
104EXPORT_SYMBOL(get_lcdclk_frequency_10khz); 104EXPORT_SYMBOL(get_lcdclk_frequency_10khz);
105
106
107int 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
119void 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}