On Mon, Oct 14, 2019 at 12:08 AM Chris Packham <Chris.Packham@xxxxxxxxxxxxxxxxxxx> wrote: Me: > > I think this should be a chained interrupt handler (see below how to > > register it). > > > > See e.g. drivers/gpio/gpio-ftgpio010.c for an example: > > change function prototype, no return value, use > > chained_irq_enter/exit(irqchip, desc); etc. > > > > I don't think a chained interrupt handler can work. The problem is that > the parent irq on the SoC is shared between the gpio and uart0 (why > it's this way with two IP blocks in the same SoC I'll never know). When > a chained interrupt handler is registered I lose the serial interrupts. > Please correct me if there is some way to make the chained handlers > deal with sharing interrupts. Aha I see. Look at: drivers/gpio/gpio-mt7621.c And how that driver sets the parent handler to NULL in order to still exploit the core helpers. I will refactor this to some more elegant API at some point when I get there, for now follow the example of mt7621. Yours, Linus Walleij