From c29b6c376befb01a46563a0fb46219f877df1d28 Mon Sep 17 00:00:00 2001 From: Alessandro Rubini Date: Thu, 2 Jul 2009 15:28:52 +0100 Subject: [PATCH] --- yaml --- r: 160967 b: refs/heads/master c: 8c81b52422147b4b09f5adb8d0c6963342a336c6 h: refs/heads/master i: 160965: d0204ab4ffa89141be872241b765deb1b9b90926 160963: 324dd003bb500dbc884b4d1682e1fc72f4f4adb4 160959: c5e90e5b3695bcbaafa67d37cd8171f0658f373c v: v3 --- [refs] | 2 +- trunk/arch/arm/common/vic.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 20e85311802a..b0b9b29b7121 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 87e8824b4588076409692b82ef4b1d98f25cd400 +refs/heads/master: 8c81b52422147b4b09f5adb8d0c6963342a336c6 diff --git a/trunk/arch/arm/common/vic.c b/trunk/arch/arm/common/vic.c index 27714ab30f25..bc1f9ad61ff6 100644 --- a/trunk/arch/arm/common/vic.c +++ b/trunk/arch/arm/common/vic.c @@ -26,6 +26,15 @@ #include #include +static void vic_ack_irq(unsigned int irq) +{ + void __iomem *base = get_irq_chip_data(irq); + irq &= 31; + writel(1 << irq, base + VIC_INT_ENABLE_CLEAR); + /* moreover, clear the soft-triggered, in case it was the reason */ + writel(1 << irq, base + VIC_INT_SOFT_CLEAR); +} + static void vic_mask_irq(unsigned int irq) { 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 static struct irq_chip vic_chip = { .name = "VIC", - .ack = vic_mask_irq, + .ack = vic_ack_irq, .mask = vic_mask_irq, .unmask = vic_unmask_irq, .set_wake = vic_set_wake,