On Wed, Mar 17, 2021 at 4:19 PM Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > From: Jan Kiszka <jan.kiszka@xxxxxxxxxxx> > > Add the required infrastructure to enable and report edge events > of the pins to the GPIO core. The actual hook-up of the event interrupt > will happen separately. > > Signed-off-by: Jan Kiszka <jan.kiszka@xxxxxxxxxxx> > Co-developed-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> I can't believe it that nobody added irq support to this driver for 10 years given how widely deployed it is! (Good work.) Don't you need to add select GPIOLIB_IRQCHIP to Kconfig? So the gpio_chip contains the .irq member you're using. > + sch->irqchip.name = "sch_gpio"; > + sch->irqchip.irq_ack = sch_irq_ack; > + sch->irqchip.irq_mask = sch_irq_mask; > + sch->irqchip.irq_unmask = sch_irq_unmask; > + sch->irqchip.irq_set_type = sch_irq_type; > + > + sch->chip.irq.chip = &sch->irqchip; > + sch->chip.irq.num_parents = 0; > + sch->chip.irq.parents = NULL; > + sch->chip.irq.parent_handler = NULL; > + sch->chip.irq.default_type = IRQ_TYPE_NONE; > + sch->chip.irq.handler = handle_bad_irq; I always add a local variable like: struct gpio_irq_chip *girq; And assign with the arrow, so as to make it easier to read: girq->parent_handler = NULL etc. +/- the above: Reviewed-by: Linus Walleij <linus.walleij@xxxxxxxxxx> Yours, Linus Walleij