diff options
| author | Eric Miao <eric.y.miao@gmail.com> | 2010-02-03 02:39:35 -0500 |
|---|---|---|
| committer | Eric Miao <eric.y.miao@gmail.com> | 2010-03-01 18:40:57 -0500 |
| commit | 2029e5643a3c4fdd4ad20169fb950cc16e023d0c (patch) | |
| tree | 8cb48739ffee9cf11522ccc1d907f3f17857a065 | |
| parent | df0c382436df5bdd74030baafa294b75c231ec8c (diff) | |
[ARM] mmp2: fix incorrect calling of chip->mask_ack() for 2nd level cascaded IRQs
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>
| -rw-r--r-- | arch/arm/mach-mmp/irq-mmp2.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/arm/mach-mmp/irq-mmp2.c b/arch/arm/mach-mmp/irq-mmp2.c index b187c027822d..cb18221c0af3 100644 --- a/arch/arm/mach-mmp/irq-mmp2.c +++ b/arch/arm/mach-mmp/irq-mmp2.c | |||
| @@ -102,7 +102,11 @@ static void init_mux_irq(struct irq_chip *chip, int start, int num) | |||
| 102 | int irq; | 102 | int irq; |
| 103 | 103 | ||
| 104 | for (irq = start; num > 0; irq++, num--) { | 104 | for (irq = start; num > 0; irq++, num--) { |
| 105 | chip->mask_ack(irq); | 105 | /* mask and clear the IRQ */ |
| 106 | chip->mask(irq); | ||
| 107 | if (chip->ack) | ||
| 108 | chip->ack(irq); | ||
| 109 | |||
| 106 | set_irq_chip(irq, chip); | 110 | set_irq_chip(irq, chip); |
| 107 | set_irq_flags(irq, IRQF_VALID); | 111 | set_irq_flags(irq, IRQF_VALID); |
| 108 | set_irq_handler(irq, handle_level_irq); | 112 | set_irq_handler(irq, handle_level_irq); |
