summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorUwe Kleine-König <ukleinek@informatik.uni-freiburg.de>2007-09-30 20:34:41 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2007-10-12 23:43:34 +0100
commitba7d850a02c7c3357ec488776405470534e7ccf8 (patch)
tree1eaf30f0f97c03ea235beeb89715ad01b011f44e /arch
parentff9e76aaba13f6f6bae31c9ac2aa2a50f5cdd801 (diff)
[ARM] 4589/1: ns9xxx: acknowledge IRQ_EXT2 in the demux routine for FPGA irqs
The FPGA on the a9m9750dev board interrupts the CPU via EXT2. So to acknowledge any FPGA interrupt IRQ_EXT2 must be acknowledged. Signed-off-by: Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-ns9xxx/board-a9m9750dev.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/arm/mach-ns9xxx/board-a9m9750dev.c b/arch/arm/mach-ns9xxx/board-a9m9750dev.c
index 925048e7adfe..88d1f7ef78c9 100644
--- a/arch/arm/mach-ns9xxx/board-a9m9750dev.c
+++ b/arch/arm/mach-ns9xxx/board-a9m9750dev.c
@@ -70,15 +70,20 @@ static void a9m9750dev_fpga_demux_handler(unsigned int irq,
{
int stat = FPGA_ISR;
+ desc->chip->mask_ack(irq);
+
while (stat != 0) {
int irqno = fls(stat) - 1;
+ struct irq_desc *fpgadesc;
stat &= ~(1 << irqno);
- desc = irq_desc + FPGA_IRQ(irqno);
+ fpgadesc = irq_desc + FPGA_IRQ(irqno);
- desc_handle_irq(FPGA_IRQ(irqno), desc);
+ desc_handle_irq(FPGA_IRQ(irqno), fpgadesc);
}
+
+ desc->chip->unmask(irq);
}
void __init board_a9m9750dev_init_irq(void)