diff options
author | Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de> | 2007-09-30 20:34:41 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2007-10-12 23:43:34 +0100 |
commit | ba7d850a02c7c3357ec488776405470534e7ccf8 (patch) | |
tree | 1eaf30f0f97c03ea235beeb89715ad01b011f44e /arch/arm | |
parent | ff9e76aaba13f6f6bae31c9ac2aa2a50f5cdd801 (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/arm')
-rw-r--r-- | arch/arm/mach-ns9xxx/board-a9m9750dev.c | 9 |
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) |