Added Marco and a few other MCP23s08 people who may be more familiar with this code. (The driver is a bit complex.) On Thu, Jun 6, 2019 at 10:59 AM Phil Reid <preid@xxxxxxxxxxxxxxxxx> wrote: > Using kernel 5.1 I'm getting the following message: > "detected irqchip that is shared with multiple gpiochips: please fix the driver" > > Which I believe should be fixed by: > 19ab5ca "pinctrl: mcp23s08: Allocate irq_chip dynamic" > > However mcp23s08_probe_one() ends up calling gpiochip_set_irq_hooks() twice. It looks strange when I look at the mcp23s08_probe_one() function because it goes like: if (mcp->irq && mcp->irq_controller) { ret = mcp23s08_irqchip_setup(mcp); if (ret) goto fail; } (...) if (mcp->irq) ret = mcp23s08_irq_setup(mcp); That seems wrong... but overall the code in this probe_one is pretty hard to follow and probably needs some refactoring. This comes from f259f896f234 ("pinctrl: mcp23s08: fix irq and irqchip setup order") by Marco, Marco can you look into this and help us figure out why this happens? Yours, Linus Walleij