Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

pinctrl: lynxpoint: Use dedicated helpers for chained IRQ handlers

Instead of relying on the fact that the parent IRQ chip supports
fasteoi mode and calling the respective callback at the end of
the interrupt handler, surround it with enter and exit helpers
for chained IRQ handlers which will consider all possible cases.

This in particular unifies how GPIO drivers handle IRQ.

Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

+4 -1
+4 -1
drivers/pinctrl/intel/pinctrl-lynxpoint.c
··· 549 549 unsigned long pending; 550 550 u32 base, pin; 551 551 552 + chained_irq_enter(chip, desc); 553 + 552 554 /* check from GPIO controller which pin triggered the interrupt */ 553 555 for (base = 0; base < lg->chip.ngpio; base += 32) { 554 556 reg = lp_gpio_reg(&lg->chip, base, LP_INT_STAT); ··· 562 560 for_each_set_bit(pin, &pending, 32) 563 561 generic_handle_domain_irq(lg->chip.irq.domain, base + pin); 564 562 } 565 - chip->irq_eoi(data); 563 + 564 + chained_irq_exit(chip, desc); 566 565 } 567 566 568 567 static void lp_irq_ack(struct irq_data *d)