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