diff options
| -rw-r--r-- | arch/arm/mach-omap2/pm24xx.c | 12 | ||||
| -rw-r--r-- | arch/arm/mach-omap2/sleep24xx.S | 19 |
2 files changed, 6 insertions, 25 deletions
diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c index c333fa6dffa8..8914b9e32ee7 100644 --- a/arch/arm/mach-omap2/pm24xx.c +++ b/arch/arm/mach-omap2/pm24xx.c | |||
| @@ -54,7 +54,6 @@ | |||
| 54 | #include "powerdomain.h" | 54 | #include "powerdomain.h" |
| 55 | #include "clockdomain.h" | 55 | #include "clockdomain.h" |
| 56 | 56 | ||
| 57 | static void (*omap2_sram_idle)(void); | ||
| 58 | static void (*omap2_sram_suspend)(u32 dllctrl, void __iomem *sdrc_dlla_ctrl, | 57 | static void (*omap2_sram_suspend)(u32 dllctrl, void __iomem *sdrc_dlla_ctrl, |
| 59 | void __iomem *sdrc_power); | 58 | void __iomem *sdrc_power); |
| 60 | 59 | ||
| @@ -172,6 +171,8 @@ static int omap2_allow_mpu_retention(void) | |||
| 172 | 171 | ||
| 173 | static void omap2_enter_mpu_retention(void) | 172 | static void omap2_enter_mpu_retention(void) |
| 174 | { | 173 | { |
| 174 | const int zero = 0; | ||
| 175 | |||
| 175 | /* Putting MPU into the WFI state while a transfer is active | 176 | /* Putting MPU into the WFI state while a transfer is active |
| 176 | * seems to cause the I2C block to timeout. Why? Good question. */ | 177 | * seems to cause the I2C block to timeout. Why? Good question. */ |
| 177 | if (omap2_i2c_active()) | 178 | if (omap2_i2c_active()) |
| @@ -196,7 +197,8 @@ static void omap2_enter_mpu_retention(void) | |||
| 196 | OMAP2_PM_PWSTCTRL); | 197 | OMAP2_PM_PWSTCTRL); |
| 197 | } | 198 | } |
| 198 | 199 | ||
| 199 | omap2_sram_idle(); | 200 | /* WFI */ |
| 201 | asm("mcr p15, 0, %0, c7, c0, 4" : : "r" (zero) : "memory", "cc"); | ||
| 200 | } | 202 | } |
| 201 | 203 | ||
| 202 | static int omap2_can_sleep(void) | 204 | static int omap2_can_sleep(void) |
| @@ -356,11 +358,9 @@ int __init omap2_pm_init(void) | |||
| 356 | /* | 358 | /* |
| 357 | * We copy the assembler sleep/wakeup routines to SRAM. | 359 | * We copy the assembler sleep/wakeup routines to SRAM. |
| 358 | * These routines need to be in SRAM as that's the only | 360 | * These routines need to be in SRAM as that's the only |
| 359 | * memory the MPU can see when it wakes up. | 361 | * memory the MPU can see when it wakes up after the entire |
| 362 | * chip enters idle. | ||
| 360 | */ | 363 | */ |
| 361 | omap2_sram_idle = omap_sram_push(omap24xx_idle_loop_suspend, | ||
| 362 | omap24xx_idle_loop_suspend_sz); | ||
| 363 | |||
| 364 | omap2_sram_suspend = omap_sram_push(omap24xx_cpu_suspend, | 364 | omap2_sram_suspend = omap_sram_push(omap24xx_cpu_suspend, |
| 365 | omap24xx_cpu_suspend_sz); | 365 | omap24xx_cpu_suspend_sz); |
| 366 | 366 | ||
diff --git a/arch/arm/mach-omap2/sleep24xx.S b/arch/arm/mach-omap2/sleep24xx.S index ce0ccd26efbd..1d3cb25c9629 100644 --- a/arch/arm/mach-omap2/sleep24xx.S +++ b/arch/arm/mach-omap2/sleep24xx.S | |||
| @@ -37,25 +37,6 @@ | |||
| 37 | .text | 37 | .text |
| 38 | 38 | ||
| 39 | /* | 39 | /* |
| 40 | * Forces OMAP into idle state | ||
| 41 | * | ||
| 42 | * omap24xx_idle_loop_suspend() - This bit of code just executes the WFI | ||
| 43 | * for normal idles. | ||
| 44 | * | ||
| 45 | * Note: This code get's copied to internal SRAM at boot. When the OMAP | ||
| 46 | * wakes up it continues execution at the point it went to sleep. | ||
| 47 | */ | ||
| 48 | .align 3 | ||
| 49 | ENTRY(omap24xx_idle_loop_suspend) | ||
| 50 | stmfd sp!, {r0, lr} @ save registers on stack | ||
| 51 | mov r0, #0 @ clear for mcr setup | ||
| 52 | mcr p15, 0, r0, c7, c0, 4 @ wait for interrupt | ||
| 53 | ldmfd sp!, {r0, pc} @ restore regs and return | ||
| 54 | |||
| 55 | ENTRY(omap24xx_idle_loop_suspend_sz) | ||
| 56 | .word . - omap24xx_idle_loop_suspend | ||
| 57 | |||
| 58 | /* | ||
| 59 | * omap24xx_cpu_suspend() - Forces OMAP into deep sleep state by completing | 40 | * omap24xx_cpu_suspend() - Forces OMAP into deep sleep state by completing |
| 60 | * SDRC shutdown then ARM shutdown. Upon wake MPU is back on so just restore | 41 | * SDRC shutdown then ARM shutdown. Upon wake MPU is back on so just restore |
| 61 | * SDRC. | 42 | * SDRC. |
