diff options
Diffstat (limited to 'arch/arm/mach-pxa/pxa27x.c')
-rw-r--r-- | arch/arm/mach-pxa/pxa27x.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index c33cf6ac8c81..4835207c1426 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c | |||
@@ -220,9 +220,6 @@ void pxa27x_cpu_pm_save(unsigned long *sleep_save) | |||
220 | 220 | ||
221 | void pxa27x_cpu_pm_restore(unsigned long *sleep_save) | 221 | void pxa27x_cpu_pm_restore(unsigned long *sleep_save) |
222 | { | 222 | { |
223 | /* ensure not to come back here if it wasn't intended */ | ||
224 | PSPR = 0; | ||
225 | |||
226 | /* restore registers */ | 223 | /* restore registers */ |
227 | RESTORE(GAFR0_L); RESTORE(GAFR0_U); | 224 | RESTORE(GAFR0_L); RESTORE(GAFR0_U); |
228 | RESTORE(GAFR1_L); RESTORE(GAFR1_U); | 225 | RESTORE(GAFR1_L); RESTORE(GAFR1_U); |
@@ -259,8 +256,6 @@ void pxa27x_cpu_pm_enter(suspend_state_t state) | |||
259 | pxa_cpu_standby(); | 256 | pxa_cpu_standby(); |
260 | break; | 257 | break; |
261 | case PM_SUSPEND_MEM: | 258 | case PM_SUSPEND_MEM: |
262 | /* set resume return address */ | ||
263 | PSPR = virt_to_phys(pxa_cpu_resume); | ||
264 | pxa27x_cpu_suspend(PWRMODE_SLEEP); | 259 | pxa27x_cpu_suspend(PWRMODE_SLEEP); |
265 | break; | 260 | break; |
266 | } | 261 | } |
@@ -271,12 +266,27 @@ static int pxa27x_cpu_pm_valid(suspend_state_t state) | |||
271 | return state == PM_SUSPEND_MEM || state == PM_SUSPEND_STANDBY; | 266 | return state == PM_SUSPEND_MEM || state == PM_SUSPEND_STANDBY; |
272 | } | 267 | } |
273 | 268 | ||
269 | static int pxa27x_cpu_pm_prepare(void) | ||
270 | { | ||
271 | /* set resume return address */ | ||
272 | PSPR = virt_to_phys(pxa_cpu_resume); | ||
273 | return 0; | ||
274 | } | ||
275 | |||
276 | static void pxa27x_cpu_pm_finish(void) | ||
277 | { | ||
278 | /* ensure not to come back here if it wasn't intended */ | ||
279 | PSPR = 0; | ||
280 | } | ||
281 | |||
274 | static struct pxa_cpu_pm_fns pxa27x_cpu_pm_fns = { | 282 | static struct pxa_cpu_pm_fns pxa27x_cpu_pm_fns = { |
275 | .save_count = SLEEP_SAVE_COUNT, | 283 | .save_count = SLEEP_SAVE_COUNT, |
276 | .save = pxa27x_cpu_pm_save, | 284 | .save = pxa27x_cpu_pm_save, |
277 | .restore = pxa27x_cpu_pm_restore, | 285 | .restore = pxa27x_cpu_pm_restore, |
278 | .valid = pxa27x_cpu_pm_valid, | 286 | .valid = pxa27x_cpu_pm_valid, |
279 | .enter = pxa27x_cpu_pm_enter, | 287 | .enter = pxa27x_cpu_pm_enter, |
288 | .prepare = pxa27x_cpu_pm_prepare, | ||
289 | .finish = pxa27x_cpu_pm_finish, | ||
280 | }; | 290 | }; |
281 | 291 | ||
282 | static void __init pxa27x_init_pm(void) | 292 | static void __init pxa27x_init_pm(void) |