On Tue, Feb 1, 2022 at 1:03 PM Marc Zyngier <maz@xxxxxxxxxx> wrote: > > Our irq_chip data structure currently suffers from two problems: > > (1) the 'name' field is often dynamically populated with a reference > to the underlying HW (DT node dame, for example) > > (2) the 'parent_device' which is used to implement runtime PM is also > dynamically populated > > (3) there is at least one instance of a subsystem messing with the > internals of irq_chip structures (gpiochip_set_irq_hooks is > what I know about) > > These things mean that although the primary use of irq_chip is to only > contain function pointers and other *static* information, the above > two fields result in these structures being copied in a number of > drivers. Eventually, it would be much better if the various drivers > would use irq_chip as an 'ops' data structure (potentially made > read-only), and keep the dynamic information somewhere more suitable. > > For (2) we already have the irqdomain structure that is designed to > deal with the context in which interrupts are used, and it makes sense > to move the 'parent_device' field over to this structure. This is what > this small series is doing, with some minor cleanup on the way. > > (1) and (3) will be dealt in separate series (and I don't have a good > solution for (3) yet). > > Thanks, > > M. > > Marc Zyngier (12): > genirq: Allow the PM device to originate from irq domain > irqchip/gic: Move PM device over to irq domain > irqchip/renesas-intc-gpio: Move PM device over to irq domain > irqchip/renesas-irqc: Move PM device over to irq domain > irqchip/imx-intmux: Move PM device over to irq domain > gpio: mt7621: Kill parent_device usage > gpio: omap: Move PM device over to irq domain > gpio: rcar: Move PM device over to irq domain > gpio: tpmx86: Move PM device over to irq domain > pinctrl: npcm: Fix broken references to chip->parent_device > pinctrl: starfive: Move PM device over to irq domain > genirq: Kill irq_chip::parent_device > > drivers/gpio/gpio-mt7621.c | 1 - > drivers/gpio/gpio-omap.c | 7 ++++--- > drivers/gpio/gpio-rcar.c | 2 +- > drivers/gpio/gpio-tqmx86.c | 3 ++- > drivers/irqchip/irq-gic.c | 12 +++++------ > drivers/irqchip/irq-imx-intmux.c | 8 +++----- > drivers/irqchip/irq-renesas-intc-irqpin.c | 3 ++- > drivers/irqchip/irq-renesas-irqc.c | 3 ++- > drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c | 25 +++++++++++------------ > drivers/pinctrl/pinctrl-starfive.c | 3 ++- > include/linux/irq.h | 2 -- > include/linux/irqdomain.h | 10 +++++++++ > kernel/irq/chip.c | 20 +++++++++++++----- > 13 files changed, 59 insertions(+), 40 deletions(-) > > -- > 2.30.2 > The changes for GPIO are small so: Acked-by: Bartosz Golaszewski <brgl@xxxxxxxx> You can take it through your tree and if there are any conflicts, I'll just ask for an immutable branch. Bart