diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c index ac062ee..aef28ab 100644 --- a/arch/arm/mach-omap2/irq.c +++ b/arch/arm/mach-omap2/irq.c @@ -26,6 +26,7 @@ #define INTC_CONTROL 0x0048 #define INTC_MIR_CLEAR0 0x0088 #define INTC_MIR_SET0 0x008c +#define INTC_PENDING 0x0098 /* * OMAP2 has a number of different interrupt controllers, each interrupt @@ -122,6 +123,20 @@ static void __init omap_irq_bank_init_one(struct omap_irq_bank *bank) intc_bank_write_reg(1 << 0, bank, INTC_SYSCONFIG); } +int omap_irq_pending(void) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(irq_banks); i++) { + struct omap_irq_bank *bank = irq_banks + i; + + if (intc_bank_read_reg(bank, INTC_PENDING)) + return 1; + } + + return 0; +} + void __init omap_init_irq(void) { unsigned long nr_irqs = 0;