It updates IRQCHIP_PLATFORM_DRIVER infrastructural to pass platform_device pointer to init_cb. On top of that, add DT binding and driver support for Qualcomm MPM (MSM Power Manager) interrupt controller. Changes for v3: - Support module build - Use relaxed accessors - Add barrier call to ensure MMIO write completes - Use d->chip_data to pass driver private data - Use raw spinlock - USe BIT() for bit shift - Create a single irq domain to cover both types of MPM pins - Call irq_resolve_mapping() to find out Linux irq number - Save the use of ternary conditional operator and use switch/case for .irq_set_type call - Drop unnecessary .irq_disable hook - Align qcom_mpm_chip and qcom_mpm_ops members vertically - Use helper irq_domain_translate_twocell() - Move mailbox requesting forward in probe function - Improve the documentation on qcm2290_gic_pins[] - Use IRQCHIP_PLATFORM_DRIVER infrastructural - Use cpu_pm notifier instead of .suspend_late hook to write MPM for sleep, so that MPM can be set up for both suspend and idle context. The TIMER0/1 setup is currently omitted for idle use case though, as I haven't been able to successfully test the idle context. Shawn Guo (3): irqchip: Pass platform_device pointer to init_cb dt-bindings: interrupt-controller: Add Qualcomm MPM support irqchip: Add Qualcomm MPM controller driver .../interrupt-controller/qcom,mpm.yaml | 72 +++ drivers/irqchip/Kconfig | 8 + drivers/irqchip/Makefile | 1 + drivers/irqchip/irq-bcm7038-l1.c | 3 +- drivers/irqchip/irq-bcm7120-l2.c | 10 +- drivers/irqchip/irq-brcmstb-l2.c | 10 +- drivers/irqchip/irq-mchp-eic.c | 4 +- drivers/irqchip/irq-meson-gpio.c | 7 +- drivers/irqchip/irqchip.c | 4 +- drivers/irqchip/qcom-mpm.c | 481 ++++++++++++++++++ drivers/irqchip/qcom-pdc.c | 4 +- include/linux/irqchip.h | 8 +- 12 files changed, 596 insertions(+), 16 deletions(-) create mode 100644 Documentation/devicetree/bindings/interrupt-controller/qcom,mpm.yaml create mode 100644 drivers/irqchip/qcom-mpm.c -- 2.17.1