On Mon, Nov 18, 2019 at 08:02:51PM +0200, Andy Shevchenko wrote: > When commit 75e99bf5ed8f ("gpio: lynxpoint: set default handler to be > handle_bad_irq()") switched default handler to be handle_bad_irq() the > lp_irq_type() function remained untouched. It means that even request_irq() > can't change the handler and we are not able to handle IRQs properly anymore. > Fix it by setting correct handlers in the lp_irq_type() callback. Linus, I can send this one and MAINTAINERS update as a PR for v5.4 if it would work better for you. P.S. I eventually found the platform to test this with GPIO IRQs (another platform I had wasn't providing GpioInt() resources and thus not possible to test). > Fixes: 75e99bf5ed8f ("gpio: lynxpoint: set default handler to be handle_bad_irq()") > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > --- > drivers/gpio/gpio-lynxpoint.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/gpio/gpio-lynxpoint.c b/drivers/gpio/gpio-lynxpoint.c > index e9e47c0d5be7..490ce7bae25e 100644 > --- a/drivers/gpio/gpio-lynxpoint.c > +++ b/drivers/gpio/gpio-lynxpoint.c > @@ -164,6 +164,12 @@ static int lp_irq_type(struct irq_data *d, unsigned type) > value |= TRIG_SEL_BIT | INT_INV_BIT; > > outl(value, reg); > + > + if (type & IRQ_TYPE_EDGE_BOTH) > + irq_set_handler_locked(d, handle_edge_irq); > + else if (type & IRQ_TYPE_LEVEL_MASK) > + irq_set_handler_locked(d, handle_level_irq); > + > spin_unlock_irqrestore(&lg->lock, flags); > > return 0; > -- > 2.24.0 > -- With Best Regards, Andy Shevchenko