Linus, Here's the main pull-request from the GPIO subsystem for this release cycle. We have lots of small changes all over the place, but no huge reworks or new drivers. There are two merges here: one is the usual pull-request from Andy and the other contains changes to the GPIO irqchip behavior from Marc Zyngier. Details are in the signed tag. Please pull. Best Regards, Bartosz Golaszewski The following changes since commit 3123109284176b1532874591f7c81f3837bbdc17: Linux 5.18-rc1 (2022-04-03 14:08:21 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git tags/gpio-updates-for-v5.19 for you to fetch changes up to 5a7cb9f3978d1fe8cfba798b4c9c054ce226e8fd: gpio: sifive: Make the irqchip immutable (2022-05-24 16:35:52 +0200) ---------------------------------------------------------------- gpio updates for v5.19 - use ioread()/iowrite() interfaces instead of raw inb()/outb() in drivers - make irqchips immutable due to the new warning popping up when drivers try to modify the irqchip structures - add new compatibles to dt-bindings for realtek-otto, renesas-rcar and pca95xx - add support for new models to gpio-rcar, gpio-pca953x & gpio-realtek-otto - allow parsing of GPIO hogs represented as children nodes of gpio-uniphier - define a set of common GPIO consumer strings in dt-bindings - shrink code in gpio-ml-ioh by using more devres interfaces - pass arguments to devm_kcalloc() in correct order in gpio-sim - add new helpers for iterating over GPIO firmware nodes and descriptors to gpiolib core and use it in several drivers - drop unused syscon_regmap_lookup_by_compatible() function - correct format specifiers and signedness of variables in GPIO ACPI - drop unneeded error checks in gpio-ftgpio - stop using the deprecated of_gpio.h header in gpio-zevio - drop platform_data support in gpio-max732x - simplify Kconfig dependencies in gpio-vf610 - use raw spinlocks where needed to make PREEMPT_RT happy - fix return values in board files using gpio-pcf857x - convert more drivers to using fwnode instead of of_node - minor fixes and improvements in gpiolib core ---------------------------------------------------------------- Alexander Shiyan (1): gpio: syscon: Remove usage of syscon_regmap_lookup_by_compatible Andy Shevchenko (22): gpiolib: Get rid of redundant 'else' gpiolib: acpi: Convert type for pin to be unsigned gpiolib: Introduce for_each_gpiochip_node() loop helper gpiolib: Introduce gpiochip_node_count() helper pinctrl: stm32: Replace custom code by gpiochip_node_count() call pinctrl: stm32: Switch to use for_each_gpiochip_node() helper pinctrl: renesas: rza1: Replace custom code by gpiochip_node_count() call pinctrl: renesas: rza1: Switch to use for_each_gpiochip_node() helper pinctrl: npcm7xx: Switch to use for_each_gpiochip_node() helper gpiolib: Move error message out of a spinlock gpiolib: Embed iterator variable into for_each_gpio_desc_with_flag() gpiolib: Split out for_each_gpio_desc() macro gpiolib: Refactor gpiolib_dbg_show() with help of for_each_gpio_desc() gpiolib: Extract gpio_chip_get_value() wrapper pinctrl: samsung: Drop redundant node parameter in samsung_banks_of_node_get() pinctrl: samsung: Switch to use for_each_gpiochip_node() helper gpiolib: Introduce a helper to get first GPIO controller node pinctrl: armada-37xx: Switch to use fwnode instead of of_node pinctrl: armada-37xx: Reuse GPIO fwnode in armada_37xx_irqchip_register() pinctrl: meson: Rename REG_* to MESON_REG_* pinctrl: meson: Enable COMPILE_TEST pinctrl: meson: Replace custom code by gpiochip_node_count() call Bartosz Golaszewski (2): Merge tag 'intel-gpio-v5.19-1' of git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel into gpio/for-next Merge branch 'irq/gpio-immutable' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into gpio/for-next Christophe JAILLET (1): gpio: sim: Use correct order for the parameters of devm_kcalloc() Geert Uytterhoeven (7): dt-bindings: gpio: renesas,rcar-gpio: Add r8a779f0 support gpio: rcar: Add R-Car Gen4 support gpio: dwapb: Make the irqchip immutable gpio: pca953x: Make the irqchip immutable gpio: pcf857x: Make the irqchip immutable gpio: rcar: Make the irqchip immutable gpio: sifive: Make the irqchip immutable Jon Hunter (1): gpio: max77620: Make the irqchip immutable Justin Chen (2): gpio: pca953xx: Add support for pca6408 dt-bindings: gpio: pca95xx: add entry for pca6408 Krzysztof Kozlowski (1): dt-bindings: gpio: add common consumer GPIO lines Kunihiko Hayashi (1): dt-bindings: gpio: uniphier: Add hogs parsing Linus Torvalds (1): gpiolib: acpi: use correct format characters Linus Walleij (2): gpio: ixp4xx: Detect special machines by compatible irq/gpio: ixp4xx: Drop boardfile probe path Marc Zyngier (10): gpio: Don't fiddle with irqchips marked as immutable gpio: Expose the gpiochip_irq_re[ql]res helpers gpio: Add helpers to ease the transition towards immutable irq_chip gpio: tegra186: Make the irqchip immutable gpio: pl061: Make the irqchip immutable pinctrl: apple-gpio: Make the irqchip immutable pinctrl: msmgpio: Make the irqchip immutable pinctrl: amd: Make the irqchip immutable gpio: Update TODO to mention immutable irq_chip structures Documentation: Update the recommended pattern for GPIO irqchips Moses Christopher Bollavarapu (1): gpio: zevio: drop of_gpio.h header Peng Fan (1): gpio: vf610: drop the SOC_VF610 dependency for GPIO_VF610 Sander Vanheule (6): dt-bindings: gpio: realtek-otto: Add rtl9300 compatible gpio: realtek-otto: Support reversed port layouts gpio: realtek-otto: Support per-cpu interrupts gpio: realtek-otto: Add RTL930x support dt-bindings: gpio: realtek-otto: Add rtl9310 compatible gpio: realtek-otto: Add RTL931x support Schspa Shi (1): gpio: use raw spinlock for gpio chip shadowed data Uwe Kleine-König (2): gpio: pcf857x: Make teardown callback return void gpio: max732x: Drop unused support for irq and setup code via platform data Wan Jiabing (1): gpio: ftgpio: Remove unneeded ERROR check before clk_disable_unprepare William Breathitt Gray (5): gpio: 104-dio-48e: Utilize iomap interface gpio: 104-idi-48: Utilize iomap interface gpio: 104-idio-16: Utilize iomap interface gpio: gpio-mm: Utilize iomap interface gpio: ws16c48: Utilize iomap interface Zheyu Ma (1): gpio: ml-ioh: Convert to use managed functions pcim* and devm_* .../bindings/gpio/gpio-consumer-common.yaml | 64 ++++++++ .../devicetree/bindings/gpio/gpio-pca95xx.yaml | 1 + .../bindings/gpio/realtek,otto-gpio.yaml | 34 +++- .../bindings/gpio/renesas,rcar-gpio.yaml | 5 + .../bindings/gpio/socionext,uniphier-gpio.yaml | 17 ++ Documentation/driver-api/gpio/driver.rst | 175 +++++++++++++++++---- arch/arm/mach-davinci/board-da830-evm.c | 3 +- arch/arm/mach-davinci/board-dm644x-evm.c | 9 +- arch/arm/mach-davinci/board-dm646x-evm.c | 4 +- drivers/gpio/Kconfig | 7 +- drivers/gpio/TODO | 19 +++ drivers/gpio/gpio-104-dio-48e.c | 63 ++++---- drivers/gpio/gpio-104-idi-48.c | 27 ++-- drivers/gpio/gpio-104-idio-16.c | 33 ++-- drivers/gpio/gpio-amdpt.c | 10 +- drivers/gpio/gpio-brcmstb.c | 12 +- drivers/gpio/gpio-cadence.c | 12 +- drivers/gpio/gpio-dwapb.c | 74 +++++---- drivers/gpio/gpio-ftgpio010.c | 8 +- drivers/gpio/gpio-gpio-mm.c | 43 ++--- drivers/gpio/gpio-grgpio.c | 30 ++-- drivers/gpio/gpio-hlwd.c | 18 +-- drivers/gpio/gpio-idt3243x.c | 12 +- drivers/gpio/gpio-ixp4xx.c | 49 ++---- drivers/gpio/gpio-loongson1.c | 8 +- drivers/gpio/gpio-max732x.c | 37 +---- drivers/gpio/gpio-max77620.c | 9 +- drivers/gpio/gpio-menz127.c | 8 +- drivers/gpio/gpio-ml-ioh.c | 76 ++------- drivers/gpio/gpio-mlxbf2.c | 18 +-- drivers/gpio/gpio-mmio.c | 22 +-- drivers/gpio/gpio-pca953x.c | 37 +++-- drivers/gpio/gpio-pcf857x.c | 49 +++--- drivers/gpio/gpio-pl061.c | 32 ++-- drivers/gpio/gpio-rcar.c | 38 +++-- drivers/gpio/gpio-realtek-otto.c | 137 +++++++++++++++- drivers/gpio/gpio-sifive.c | 26 +-- drivers/gpio/gpio-sim.c | 4 +- drivers/gpio/gpio-syscon.c | 49 +++--- drivers/gpio/gpio-tb10x.c | 4 +- drivers/gpio/gpio-tegra186.c | 32 ++-- drivers/gpio/gpio-ws16c48.c | 65 ++++---- drivers/gpio/gpio-zevio.c | 25 +-- drivers/gpio/gpiolib-acpi.c | 22 +-- drivers/gpio/gpiolib-cdev.c | 66 ++++---- drivers/gpio/gpiolib-of.c | 3 +- drivers/gpio/gpiolib-sysfs.c | 3 +- drivers/gpio/gpiolib.c | 88 +++++------ drivers/gpio/gpiolib.h | 11 +- drivers/irqchip/irq-ixp4xx.c | 126 +-------------- drivers/pinctrl/meson/Kconfig | 2 +- drivers/pinctrl/meson/pinctrl-meson.c | 52 +++--- drivers/pinctrl/meson/pinctrl-meson.h | 28 ++-- drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 34 ++-- drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c | 150 ++++++++---------- drivers/pinctrl/pinctrl-amd.c | 11 +- drivers/pinctrl/pinctrl-apple-gpio.c | 29 ++-- drivers/pinctrl/qcom/pinctrl-msm.c | 53 ++++--- drivers/pinctrl/renesas/pinctrl-rza1.c | 47 ++---- drivers/pinctrl/samsung/pinctrl-exynos.c | 8 +- drivers/pinctrl/samsung/pinctrl-s3c24xx.c | 2 +- drivers/pinctrl/samsung/pinctrl-s3c64xx.c | 4 +- drivers/pinctrl/samsung/pinctrl-samsung.c | 30 ++-- drivers/pinctrl/samsung/pinctrl-samsung.h | 2 +- drivers/pinctrl/stm32/pinctrl-stm32.c | 80 +++++----- include/linux/gpio/consumer.h | 8 +- include/linux/gpio/driver.h | 46 +++++- include/linux/irq.h | 2 + include/linux/irqchip/irq-ixp4xx.h | 12 -- include/linux/platform_data/max732x.h | 12 -- include/linux/platform_data/pcf857x.h | 2 +- kernel/irq/debugfs.c | 1 + 72 files changed, 1277 insertions(+), 1062 deletions(-) create mode 100644 Documentation/devicetree/bindings/gpio/gpio-consumer-common.yaml delete mode 100644 include/linux/irqchip/irq-ixp4xx.h