diff options
Diffstat (limited to 'arch/arm/mach-pxa/pxa27x.c')
| -rw-r--r-- | arch/arm/mach-pxa/pxa27x.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index 2fecbec58d88..9d2400b5f503 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c | |||
| @@ -24,6 +24,7 @@ | |||
| 24 | #include <asm/mach/map.h> | 24 | #include <asm/mach/map.h> |
| 25 | #include <mach/hardware.h> | 25 | #include <mach/hardware.h> |
| 26 | #include <asm/irq.h> | 26 | #include <asm/irq.h> |
| 27 | #include <asm/suspend.h> | ||
| 27 | #include <mach/irqs.h> | 28 | #include <mach/irqs.h> |
| 28 | #include <mach/gpio.h> | 29 | #include <mach/gpio.h> |
| 29 | #include <mach/pxa27x.h> | 30 | #include <mach/pxa27x.h> |
| @@ -284,6 +285,11 @@ void pxa27x_cpu_pm_restore(unsigned long *sleep_save) | |||
| 284 | void pxa27x_cpu_pm_enter(suspend_state_t state) | 285 | void pxa27x_cpu_pm_enter(suspend_state_t state) |
| 285 | { | 286 | { |
| 286 | extern void pxa_cpu_standby(void); | 287 | extern void pxa_cpu_standby(void); |
| 288 | #ifndef CONFIG_IWMMXT | ||
| 289 | u64 acc0; | ||
| 290 | |||
| 291 | asm volatile("mra %Q0, %R0, acc0" : "=r" (acc0)); | ||
| 292 | #endif | ||
| 287 | 293 | ||
| 288 | /* ensure voltage-change sequencer not initiated, which hangs */ | 294 | /* ensure voltage-change sequencer not initiated, which hangs */ |
| 289 | PCFR &= ~PCFR_FVC; | 295 | PCFR &= ~PCFR_FVC; |
| @@ -299,7 +305,10 @@ void pxa27x_cpu_pm_enter(suspend_state_t state) | |||
| 299 | pxa_cpu_standby(); | 305 | pxa_cpu_standby(); |
| 300 | break; | 306 | break; |
| 301 | case PM_SUSPEND_MEM: | 307 | case PM_SUSPEND_MEM: |
| 302 | pxa27x_cpu_suspend(pwrmode, PLAT_PHYS_OFFSET - PAGE_OFFSET); | 308 | cpu_suspend(pwrmode, pxa27x_finish_suspend); |
| 309 | #ifndef CONFIG_IWMMXT | ||
| 310 | asm volatile("mar acc0, %Q0, %R0" : "=r" (acc0)); | ||
| 311 | #endif | ||
| 303 | break; | 312 | break; |
| 304 | } | 313 | } |
| 305 | } | 314 | } |
