diff options
author | Tero Kristo <tero.kristo@nokia.com> | 2009-10-23 12:03:48 -0400 |
---|---|---|
committer | Kevin Hilman <khilman@deeprootsystems.com> | 2010-01-20 21:15:58 -0500 |
commit | 2bbe3af3f1e1c1d0992c984e05d061ef5469edb4 (patch) | |
tree | df2f0e2ef2561930d277d0923dd15012046646ff /arch/arm | |
parent | 7284ce6c9f6153d1777df5f310c959724d1bd446 (diff) |
OMAP3: PM: Ack pending interrupts before entering suspend
Suspending drivers may still generate interrupts just before their suspend is
completed. Any pending interrupts here will prevent sleep.
Signed-off-by: Tero Kristo <tero.kristo@nokia.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-omap2/irq.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-omap2/pm34xx.c | 2 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/plat/irqs.h | 1 |
3 files changed, 9 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c index e9bc782fa414..54c5f0dcd663 100644 --- a/arch/arm/mach-omap2/irq.c +++ b/arch/arm/mach-omap2/irq.c | |||
@@ -274,4 +274,10 @@ void omap_intc_restore_context(void) | |||
274 | } | 274 | } |
275 | /* MIRs are saved and restore with other PRCM registers */ | 275 | /* MIRs are saved and restore with other PRCM registers */ |
276 | } | 276 | } |
277 | |||
278 | void omap3_intc_suspend(void) | ||
279 | { | ||
280 | /* A pending interrupt would prevent OMAP from entering suspend */ | ||
281 | omap_ack_irq(0); | ||
282 | } | ||
277 | #endif /* CONFIG_ARCH_OMAP3 */ | 283 | #endif /* CONFIG_ARCH_OMAP3 */ |
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index c6cc809afb79..b26418d55076 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c | |||
@@ -578,6 +578,8 @@ static int omap3_pm_suspend(void) | |||
578 | } | 578 | } |
579 | 579 | ||
580 | omap_uart_prepare_suspend(); | 580 | omap_uart_prepare_suspend(); |
581 | omap3_intc_suspend(); | ||
582 | |||
581 | omap_sram_idle(); | 583 | omap_sram_idle(); |
582 | 584 | ||
583 | restore: | 585 | restore: |
diff --git a/arch/arm/plat-omap/include/plat/irqs.h b/arch/arm/plat-omap/include/plat/irqs.h index 97d6c50c3dcb..0082036f6a48 100644 --- a/arch/arm/plat-omap/include/plat/irqs.h +++ b/arch/arm/plat-omap/include/plat/irqs.h | |||
@@ -499,6 +499,7 @@ extern void omap_init_irq(void); | |||
499 | extern int omap_irq_pending(void); | 499 | extern int omap_irq_pending(void); |
500 | void omap_intc_save_context(void); | 500 | void omap_intc_save_context(void); |
501 | void omap_intc_restore_context(void); | 501 | void omap_intc_restore_context(void); |
502 | void omap3_intc_suspend(void); | ||
502 | #endif | 503 | #endif |
503 | 504 | ||
504 | #include <mach/hardware.h> | 505 | #include <mach/hardware.h> |