[ARM] mmp2: fix incorrect calling of chip->mask_ack() for 2nd level cascaded IRQs
authorEric Miao <eric.y.miao@gmail.com>
Wed, 3 Feb 2010 07:39:35 +0000 (23:39 -0800)
committerEric Miao <eric.y.miao@gmail.com>
Mon, 1 Mar 2010 23:40:57 +0000 (07:40 +0800)
The irq_chip is not yet registered, so no default irq_chip.mask_ack(),
which we have to handle it correctly manually here.

Signed-off-by: Haojian Zhuang <haojian.zhuang@marvell.com>
Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
arch/arm/mach-mmp/irq-mmp2.c

index b187c02..cb18221 100644 (file)
@@ -102,7 +102,11 @@ static void init_mux_irq(struct irq_chip *chip, int start, int num)
        int irq;
 
        for (irq = start; num > 0; irq++, num--) {
-               chip->mask_ack(irq);
+               /* mask and clear the IRQ */
+               chip->mask(irq);
+               if (chip->ack)
+                       chip->ack(irq);
+
                set_irq_chip(irq, chip);
                set_irq_flags(irq, IRQF_VALID);
                set_irq_handler(irq, handle_level_irq);