diff options
author | Linus Walleij <triad@df.lth.se> | 2009-04-16 16:17:56 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-04-16 16:29:46 -0400 |
commit | 77f4025b5e7b290f5c3cc03aa6242328694c71d4 (patch) | |
tree | 03150e3fe3075eeadf3df3b978766bae139b615a /arch/arm | |
parent | 5e075cb5cee4faecc82e2b8a04e640176629976e (diff) |
[ARM] 5455/1: Fix IRQ noise from VIC code
The VIC code will attempt to perform som
default set_irq_chip() and set_irq_chip_data()
on all IRQs supported by the VIC, while the new
IRQ handling code strictly checks for the global
NR_IRQS to be respected also for these IRQs.
This patch will respect the interrupt mask passed
to the VIC driver and will prevent it from
attempting to call these functions on any unused
interrupts.
Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/common/vic.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/arch/arm/common/vic.c b/arch/arm/common/vic.c index ecf0bfbab107..b2a781d9ce05 100644 --- a/arch/arm/common/vic.c +++ b/arch/arm/common/vic.c | |||
@@ -85,12 +85,11 @@ void __init vic_init(void __iomem *base, unsigned int irq_start, | |||
85 | writel(32, base + VIC_PL190_DEF_VECT_ADDR); | 85 | writel(32, base + VIC_PL190_DEF_VECT_ADDR); |
86 | 86 | ||
87 | for (i = 0; i < 32; i++) { | 87 | for (i = 0; i < 32; i++) { |
88 | unsigned int irq = irq_start + i; | ||
89 | |||
90 | set_irq_chip(irq, &vic_chip); | ||
91 | set_irq_chip_data(irq, base); | ||
92 | |||
93 | if (vic_sources & (1 << i)) { | 88 | if (vic_sources & (1 << i)) { |
89 | unsigned int irq = irq_start + i; | ||
90 | |||
91 | set_irq_chip(irq, &vic_chip); | ||
92 | set_irq_chip_data(irq, base); | ||
94 | set_irq_handler(irq, handle_level_irq); | 93 | set_irq_handler(irq, handle_level_irq); |
95 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); | 94 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); |
96 | } | 95 | } |