aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/plat-s3c24xx/irq.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/arm/plat-s3c24xx/irq.c b/arch/arm/plat-s3c24xx/irq.c
index d696bbd1c9e..e236ec70fa0 100644
--- a/arch/arm/plat-s3c24xx/irq.c
+++ b/arch/arm/plat-s3c24xx/irq.c
@@ -497,6 +497,20 @@ s3c_irq_demux_extint8(unsigned int irq,
generic_handle_irq(irq);
}
+ /* ACK those interrupts which are masked, but pending */
+ eintpnd = __raw_readl(S3C24XX_EINTPEND);
+ eintmsk = __raw_readl(S3C24XX_EINTMASK);
+
+ eintpnd &= eintmsk;
+ eintpnd &= ~0xff; /* ignore lower irqs */
+
+ while (eintpnd) {
+ irq = __ffs(eintpnd);
+ eintpnd &= ~(1 << irq);
+
+ irq += (IRQ_EINT4 - 4);
+ s3c_irqext_ack(irq);
+ }
}
static void