diff options
Diffstat (limited to 'arch/arm/plat-s3c24xx')
-rw-r--r-- | arch/arm/plat-s3c24xx/irq.c | 14 |
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 |