From 375496d16254ca478c3d69620a47f47520faecdd Mon Sep 17 00:00:00 2001 From: Ben Dooks Date: Thu, 28 Sep 2006 20:40:50 +0100 Subject: [PATCH] --- yaml --- r: 36665 b: refs/heads/master c: 38e0533ce87a58e25f959e6d0958478b6a137794 h: refs/heads/master i: 36663: 2ad82983798bbcb66c6db3b00bc4bf1ce2d4de63 v: v3 --- [refs] | 2 +- trunk/arch/arm/mach-s3c2410/irq.c | 44 +++++++++++++++++++++++++------ 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 56c36c9c28fc..cea0d1415a6e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1f51c10c5e85050506663bce1d69513eb901db87 +refs/heads/master: 38e0533ce87a58e25f959e6d0958478b6a137794 diff --git a/trunk/arch/arm/mach-s3c2410/irq.c b/trunk/arch/arm/mach-s3c2410/irq.c index 9c7463bf8f86..0ecfef3c7514 100644 --- a/trunk/arch/arm/mach-s3c2410/irq.c +++ b/trunk/arch/arm/mach-s3c2410/irq.c @@ -569,18 +569,46 @@ s3c_irq_demux_uart2(unsigned int irq, } static void -s3c_irq_demux_extint(unsigned int irq, - struct irqdesc *desc, - struct pt_regs *regs) +s3c_irq_demux_extint8(unsigned int irq, + struct irqdesc *desc, + struct pt_regs *regs) { unsigned long eintpnd = __raw_readl(S3C24XX_EINTPEND); unsigned long eintmsk = __raw_readl(S3C24XX_EINTMASK); eintpnd &= ~eintmsk; + eintpnd &= ~0xff; /* ignore lower irqs */ - if (eintpnd) { - irq = fls(eintpnd); - irq += (IRQ_EINT4 - (4 + 1)); + /* we may as well handle all the pending IRQs here */ + + while (eintpnd) { + irq = __ffs(eintpnd); + eintpnd &= ~(1<