diff options
Diffstat (limited to 'arch/arm/mach-omap/pm.c')
| -rw-r--r-- | arch/arm/mach-omap/pm.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/arch/arm/mach-omap/pm.c b/arch/arm/mach-omap/pm.c index 00fac155df2a..6b03ccdc1e92 100644 --- a/arch/arm/mach-omap/pm.c +++ b/arch/arm/mach-omap/pm.c | |||
| @@ -41,7 +41,9 @@ | |||
| 41 | #include <linux/pm.h> | 41 | #include <linux/pm.h> |
| 42 | 42 | ||
| 43 | #include <asm/io.h> | 43 | #include <asm/io.h> |
| 44 | #include <asm/mach/time.h> | ||
| 44 | #include <asm/mach-types.h> | 45 | #include <asm/mach-types.h> |
| 46 | |||
| 45 | #include <asm/arch/omap16xx.h> | 47 | #include <asm/arch/omap16xx.h> |
| 46 | #include <asm/arch/pm.h> | 48 | #include <asm/arch/pm.h> |
| 47 | #include <asm/arch/mux.h> | 49 | #include <asm/arch/mux.h> |
| @@ -80,13 +82,13 @@ void omap_pm_idle(void) | |||
| 80 | return; | 82 | return; |
| 81 | } | 83 | } |
| 82 | mask32 = omap_readl(ARM_SYSST); | 84 | mask32 = omap_readl(ARM_SYSST); |
| 83 | local_fiq_enable(); | ||
| 84 | local_irq_enable(); | ||
| 85 | 85 | ||
| 86 | #if defined(CONFIG_OMAP_32K_TIMER) && defined(CONFIG_NO_IDLE_HZ) | 86 | /* |
| 87 | /* Override timer to use VST for the next cycle */ | 87 | * Since an interrupt may set up a timer, we don't want to |
| 88 | omap_32k_timer_next_vst_interrupt(); | 88 | * reprogram the hardware timer with interrupts enabled. |
| 89 | #endif | 89 | * Re-enable interrupts only after returning from idle. |
| 90 | */ | ||
| 91 | timer_dyn_reprogram(); | ||
| 90 | 92 | ||
| 91 | if ((mask32 & DSP_IDLE) == 0) { | 93 | if ((mask32 & DSP_IDLE) == 0) { |
| 92 | __asm__ volatile ("mcr p15, 0, r0, c7, c0, 4"); | 94 | __asm__ volatile ("mcr p15, 0, r0, c7, c0, 4"); |
| @@ -102,6 +104,8 @@ void omap_pm_idle(void) | |||
| 102 | 104 | ||
| 103 | func_ptr(); | 105 | func_ptr(); |
| 104 | } | 106 | } |
| 107 | local_fiq_enable(); | ||
| 108 | local_irq_enable(); | ||
| 105 | } | 109 | } |
| 106 | 110 | ||
| 107 | /* | 111 | /* |
