mfd: Still check other interrupts if we get a wm831x touchscreen IRQ
It is possible that we will see another interrupt triggering at the same time as the touchscreen interrupts so it's still worth checking other possible sources. Almost all of the win from the fast path comes from only needing to read the primary register and saving the I/O costs. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
Родитель
e3380333b8
Коммит
953c7d025d
|
@ -472,8 +472,7 @@ static irqreturn_t wm831x_irq_thread(int irq, void *data)
|
||||||
handle_nested_irq(wm831x->irq_base + WM831X_IRQ_TCHPD);
|
handle_nested_irq(wm831x->irq_base + WM831X_IRQ_TCHPD);
|
||||||
if (primary & WM831X_TCHDATA_INT)
|
if (primary & WM831X_TCHDATA_INT)
|
||||||
handle_nested_irq(wm831x->irq_base + WM831X_IRQ_TCHDATA);
|
handle_nested_irq(wm831x->irq_base + WM831X_IRQ_TCHDATA);
|
||||||
if (primary & (WM831X_TCHDATA_EINT | WM831X_TCHPD_EINT))
|
primary &= ~(WM831X_TCHDATA_EINT | WM831X_TCHPD_EINT);
|
||||||
goto out;
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(wm831x_irqs); i++) {
|
for (i = 0; i < ARRAY_SIZE(wm831x_irqs); i++) {
|
||||||
int offset = wm831x_irqs[i].reg - 1;
|
int offset = wm831x_irqs[i].reg - 1;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче