aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-omap2/irq.c')
-rw-r--r--arch/arm/mach-omap2/irq.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c
index e9bc782fa414..26aeef560aa3 100644
--- a/arch/arm/mach-omap2/irq.c
+++ b/arch/arm/mach-omap2/irq.c
@@ -194,7 +194,7 @@ void __init omap_init_irq(void)
194 int i; 194 int i;
195 195
196 for (i = 0; i < ARRAY_SIZE(irq_banks); i++) { 196 for (i = 0; i < ARRAY_SIZE(irq_banks); i++) {
197 unsigned long base; 197 unsigned long base = 0;
198 struct omap_irq_bank *bank = irq_banks + i; 198 struct omap_irq_bank *bank = irq_banks + i;
199 199
200 if (cpu_is_omap24xx()) 200 if (cpu_is_omap24xx())
@@ -202,6 +202,8 @@ void __init omap_init_irq(void)
202 else if (cpu_is_omap34xx()) 202 else if (cpu_is_omap34xx())
203 base = OMAP34XX_IC_BASE; 203 base = OMAP34XX_IC_BASE;
204 204
205 BUG_ON(!base);
206
205 /* Static mapping, never released */ 207 /* Static mapping, never released */
206 bank->base_reg = ioremap(base, SZ_4K); 208 bank->base_reg = ioremap(base, SZ_4K);
207 if (!bank->base_reg) { 209 if (!bank->base_reg) {
@@ -274,4 +276,22 @@ void omap_intc_restore_context(void)
274 } 276 }
275 /* MIRs are saved and restore with other PRCM registers */ 277 /* MIRs are saved and restore with other PRCM registers */
276} 278}
279
280void omap3_intc_suspend(void)
281{
282 /* A pending interrupt would prevent OMAP from entering suspend */
283 omap_ack_irq(0);
284}
285
286void omap3_intc_prepare_idle(void)
287{
288 /* Disable autoidle as it can stall interrupt controller */
289 intc_bank_write_reg(0, &irq_banks[0], INTC_SYSCONFIG);
290}
291
292void omap3_intc_resume_idle(void)
293{
294 /* Re-enable autoidle */
295 intc_bank_write_reg(1, &irq_banks[0], INTC_SYSCONFIG);
296}
277#endif /* CONFIG_ARCH_OMAP3 */ 297#endif /* CONFIG_ARCH_OMAP3 */