mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 12:52:30 +00:00
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>
This commit is contained in:
parent
88c939770d
commit
ccd80c7142
@ -231,12 +231,6 @@ static irqreturn_t wm8994_irq_thread(int irq, void *data)
|
|||||||
status[i] &= ~wm8994->irq_masks_cur[i];
|
status[i] &= ~wm8994->irq_masks_cur[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Report */
|
|
||||||
for (i = 0; i < ARRAY_SIZE(wm8994_irqs); i++) {
|
|
||||||
if (status[wm8994_irqs[i].reg - 1] & wm8994_irqs[i].mask)
|
|
||||||
handle_nested_irq(wm8994->irq_base + i);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Ack any unmasked IRQs */
|
/* Ack any unmasked IRQs */
|
||||||
for (i = 0; i < ARRAY_SIZE(status); i++) {
|
for (i = 0; i < ARRAY_SIZE(status); i++) {
|
||||||
if (status[i])
|
if (status[i])
|
||||||
@ -244,6 +238,12 @@ static irqreturn_t wm8994_irq_thread(int irq, void *data)
|
|||||||
status[i]);
|
status[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Report */
|
||||||
|
for (i = 0; i < ARRAY_SIZE(wm8994_irqs); i++) {
|
||||||
|
if (status[wm8994_irqs[i].reg - 1] & wm8994_irqs[i].mask)
|
||||||
|
handle_nested_irq(wm8994->irq_base + i);
|
||||||
|
}
|
||||||
|
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user