diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-07-21 05:09:24 -0400 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2011-07-31 17:28:27 -0400 |
commit | ccd80c7142ba178f5395fe69244e6c4611100511 (patch) | |
tree | 6ad46fbf7aebcc2302ad28052bdcea9b4ca308dd /drivers/mfd/wm8994-irq.c | |
parent | 88c939770db375244b00ba92e901fa92677a7164 (diff) |
mfd: Acknowledge WM8994 IRQs before reporting
This ensures we never have a window where we've handled an interrupt but
not told the hardware about it.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/mfd/wm8994-irq.c')
-rw-r--r-- | drivers/mfd/wm8994-irq.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/mfd/wm8994-irq.c b/drivers/mfd/wm8994-irq.c index 71c6e8f9aedb..d682f7bd112c 100644 --- a/drivers/mfd/wm8994-irq.c +++ b/drivers/mfd/wm8994-irq.c | |||
@@ -231,12 +231,6 @@ static irqreturn_t wm8994_irq_thread(int irq, void *data) | |||
231 | status[i] &= ~wm8994->irq_masks_cur[i]; | 231 | status[i] &= ~wm8994->irq_masks_cur[i]; |
232 | } | 232 | } |
233 | 233 | ||
234 | /* Report */ | ||
235 | for (i = 0; i < ARRAY_SIZE(wm8994_irqs); i++) { | ||
236 | if (status[wm8994_irqs[i].reg - 1] & wm8994_irqs[i].mask) | ||
237 | handle_nested_irq(wm8994->irq_base + i); | ||
238 | } | ||
239 | |||
240 | /* Ack any unmasked IRQs */ | 234 | /* Ack any unmasked IRQs */ |
241 | for (i = 0; i < ARRAY_SIZE(status); i++) { | 235 | for (i = 0; i < ARRAY_SIZE(status); i++) { |
242 | if (status[i]) | 236 | if (status[i]) |
@@ -244,6 +238,12 @@ static irqreturn_t wm8994_irq_thread(int irq, void *data) | |||
244 | status[i]); | 238 | status[i]); |
245 | } | 239 | } |
246 | 240 | ||
241 | /* Report */ | ||
242 | for (i = 0; i < ARRAY_SIZE(wm8994_irqs); i++) { | ||
243 | if (status[wm8994_irqs[i].reg - 1] & wm8994_irqs[i].mask) | ||
244 | handle_nested_irq(wm8994->irq_base + i); | ||
245 | } | ||
246 | |||
247 | return IRQ_HANDLED; | 247 | return IRQ_HANDLED; |
248 | } | 248 | } |
249 | 249 | ||