diff options
Diffstat (limited to 'arch/arm/common/vic.c')
-rw-r--r-- | arch/arm/common/vic.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/arm/common/vic.c b/arch/arm/common/vic.c index 27714ab30f25..bc1f9ad61ff6 100644 --- a/arch/arm/common/vic.c +++ b/arch/arm/common/vic.c | |||
@@ -26,6 +26,15 @@ | |||
26 | #include <asm/mach/irq.h> | 26 | #include <asm/mach/irq.h> |
27 | #include <asm/hardware/vic.h> | 27 | #include <asm/hardware/vic.h> |
28 | 28 | ||
29 | static void vic_ack_irq(unsigned int irq) | ||
30 | { | ||
31 | void __iomem *base = get_irq_chip_data(irq); | ||
32 | irq &= 31; | ||
33 | writel(1 << irq, base + VIC_INT_ENABLE_CLEAR); | ||
34 | /* moreover, clear the soft-triggered, in case it was the reason */ | ||
35 | writel(1 << irq, base + VIC_INT_SOFT_CLEAR); | ||
36 | } | ||
37 | |||
29 | static void vic_mask_irq(unsigned int irq) | 38 | static void vic_mask_irq(unsigned int irq) |
30 | { | 39 | { |
31 | void __iomem *base = get_irq_chip_data(irq); | 40 | void __iomem *base = get_irq_chip_data(irq); |
@@ -253,7 +262,7 @@ static inline void vic_pm_register(void __iomem *base, unsigned int irq, u32 arg | |||
253 | 262 | ||
254 | static struct irq_chip vic_chip = { | 263 | static struct irq_chip vic_chip = { |
255 | .name = "VIC", | 264 | .name = "VIC", |
256 | .ack = vic_mask_irq, | 265 | .ack = vic_ack_irq, |
257 | .mask = vic_mask_irq, | 266 | .mask = vic_mask_irq, |
258 | .unmask = vic_unmask_irq, | 267 | .unmask = vic_unmask_irq, |
259 | .set_wake = vic_set_wake, | 268 | .set_wake = vic_set_wake, |