Hi Linus, here is the bulk of GPIO changes for the v5.8 kernel cycle. Nothing too exciting, details in the signed tag. Some new functionality was added on top of massive fixes so that is why I merged in v5.7-rc7 to make it apply without creating a mess. Please pull it in! Med vänlig hälsning, Linus Walleij The following changes since commit 9cb1fd0efd195590b828b9b865421ad345a4a145: Linux 5.7-rc7 (2020-05-24 15:32:54 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git tags/gpio-v5.8-1 for you to fetch changes up to 74910e15ab25f95f162bc4d4a634d029186543ce: gpio: pca953x: Drop unneeded ACPI_PTR() (2020-06-03 14:04:28 +0200) ---------------------------------------------------------------- This is the bulk of GPIO changes for the v5.8 kernel cycle. Core changes: - A new GPIO aggregator driver has been merged: this can join a few select GPIO lines into a new aggregated GPIO chip. This can be used for security: a process can be granted access to only these lines, for example for industrial control. Another way to use this is to reexpose certain select lines to a virtual machine or container. - Warn if the gpio-line-names is too long in he DT parser core. - GPIO lines can now be looked up by line name in addition to being looked up by offset. New drivers: - A new generic regmap GPIO driver has been merged. Too many regmap drivers are starting to look like each other so we need to create some common ground and try to move drivers over to using that. - The F7188X driver now supports F81865. Driver improvements: - Large improvements to the PCA953x expander, get multiple lines and several cleanups. - Large improvements to the DesignWare DWAPB driver, and Sergey Semin has volunteered to maintain it. - PL061 can now be built as a module, this is part of a bigger effort to make the ARM platforms more modular. ---------------------------------------------------------------- Adam Ford (1): gpiolib: of: improve gpiolib-of support of pull up/down on expanders Andy Shevchenko (35): gpio: Extend TODO to cover code duplication avoidance gpio: pch: Use BIT() and GENMASK() where it's appropriate gpio: pch: Get rid of unneeded variable in IRQ handler gpio: pch: Refactor pch_irq_type() to avoid unnecessary locking gpio: pch: Use in pch_irq_type() macros provided by IRQ core gpio: merrifield: Switch over to MSI interrupts gpio: merrifield: Better show how GPIO and IRQ bases are derived from hardware gpio: dwapb: Append MODULE_ALIAS for platform driver gpio: dwapb: Refactor IRQ handler to use bit operations gpio: dwapb: Use chained IRQ prologue and epilogue gpio: dwapb: set default handler to be handle_bad_irq() gpio: dwapb: Deduplicate IRQ resource management gpio: dwapb: Convert to use irqd_to_hwirq() gpio: dwapb: Use device_get_match_data() to simplify code gpio: dwapb: Convert to use IRQ core provided macros gpio: dwapb: Switch to more usual pattern of RMW in dwapb_gpio_set_debounce() gpio: dwapb: Drop bogus BUG_ON()s gpio: dwapb: Drop of_match_ptr() & ACPI_PTR() calls gpio: dwapb: Split out dwapb_get_irq() helper gpio: dwapb: Get rid of unnecessary conjunction over 32-bit value gpio: dwapb: Amend indentation in some cases gpio: pca953x: Rewrite ->get_multiple() function gpio: mb86s7x: Use devm_clk_get_optional() to get the input clock gpio: mb86s7x: Remove superfluous test for ACPI companion gpio: xgene-sb: Drop redundant OF_GPIO dependency gpio: xgene-sb: Allow driver to be built with COMPILE_TEST gpio: xgene-sb: Drop extra check to call acpi_gpiochip_request_interrupts() gpio: dwapb: Call acpi_gpiochip_free_interrupts() on GPIO chip de-registration gpio: dwapb: avoid error message for optional IRQ gpio: dwapb: Don't use IRQ 0 as valid Linux interrupt gpio: dwapb: Remove unneeded has_irq member in struct dwapb_port_property MAINTAINERS: Fix file name for DesignWare GPIO DT schema gpio: pca935x: Allow IRQ support for driver built as a module gpiolib: Separate GPIO_GET_LINEINFO_WATCH_IOCTL conditional gpio: pca953x: Drop unneeded ACPI_PTR() Bartosz Golaszewski (1): gpio: pca953x: disable regmap locking Brian Masney (1): gpio: xgene-sb: set valid IRQ type in to_irq() Dejin Zheng (2): gpio: ftgpio010: Fix small typo gpio: mm-lantiq: Fix small typo Dinghao Liu (1): gpio: rcar: Fix runtime PM imbalance on error Douglas Anderson (2): gpio: Document proper return value for gpio drivers gpio: Make "offset" and "unsigned int", not just "unsigned" Geert Uytterhoeven (10): gpiolib: Improve kernel messages gpiolib: Rename "chip" variables to "gc" in core header file gpiolib: Document that GPIO line names are not globally unique i2c: i801: Use GPIO_LOOKUP() helper macro mfd: sm501: Use GPIO_LOOKUP_IDX() helper macro gpiolib: Add support for GPIO lookup by line name gpio: Add GPIO Aggregator docs: gpio: Add GPIO Aggregator documentation MAINTAINERS: Add GPIO Aggregator section dt-bindings: gpio: Add renesas,em-gio bindings Hans de Goede (1): gpiolib: acpi: Add missing __init(const) markers to initcall-s Kent Gibson (1): tools: gpio: add bias flags to lsgpio Linus Walleij (5): Merge tag 'gpio-updates-for-v5.8-part1' of git://git.kernel.org/.../brgl/linux into devel Merge tag 'intel-gpio-v5.8-1' of git://git.kernel.org/.../andy/linux-gpio-intel into devel Merge branch 'ib-gpio-aggregator' into devel Merge tag 'gpio-updates-for-v5.8-part2' of git://git.kernel.org/.../brgl/linux into devel Merge tag 'v5.7-rc7' into devel Maulik Shah (1): gpio: gpiolib: Allow GPIO IRQs to lazy disable Mian Yousaf Kaukab (1): gpio: tegra186: export MODULE_DEVICE_TABLE Michael Walle (3): gpiolib: Introduce gpiochip_irqchip_add_domain() gpio: add a reusable generic gpio_chip using regmap MAINTAINERS: Add gpio regmap section Paul Thomas (1): gpio: gpio-pca953x, Add get_multiple function Petteri Jokinen (1): gpio-f7188x: Add GPIO support for F81865 Rob Herring (1): gpio: pl061: Support building as module Rodrigo Alencar (1): gpio: max730x: bring gpiochip_add_data after port config Serge Semin (6): dt-bindings: gpio: Convert snps,dw-apb-gpio to DT schema dt-bindings: gpio: Add DW GPIO debounce clock property dt-bindings: gpio: Add Sergey Semin to DW APB GPIO driver maintainers gpio: dwapb: Use optional-clocks interface for APB ref-clock gpio: dwapb: Add debounce reference clock support MAINTAINERS: Add Segey Semin to maintainers of DW APB GPIO driver Stephen Boyd (1): gpiolib: devprop: Warn if gpio-line-names is too long Tiezhu Yang (1): gpio: pxa: Add COMPILE_TEST support Uwe Kleine-König (2): gpio: pca953x: fix handling of automatic address incrementing gpio: pca953x: drop unused parameters of pca953x_recalc_addr() Wei Yongjun (1): gpio: mlxbf2: fix return value check in mlxbf2_gpio_get_lock_res() YueHaibing (1): gpio: mlxbf2: remove unused including <linux/version.h> sachin agarwal (1): gpio: ich: fix a typo Documentation/admin-guide/gpio/gpio-aggregator.rst | 111 ++++ Documentation/admin-guide/gpio/index.rst | 1 + .../devicetree/bindings/gpio/renesas,em-gio.yaml | 70 +++ .../devicetree/bindings/gpio/snps,dw-apb-gpio.yaml | 134 +++++ .../devicetree/bindings/gpio/snps-dwapb-gpio.txt | 65 --- Documentation/driver-api/gpio/board.rst | 15 +- MAINTAINERS | 16 +- drivers/gpio/Kconfig | 24 +- drivers/gpio/Makefile | 2 + drivers/gpio/TODO | 4 + drivers/gpio/gpio-aggregator.c | 568 +++++++++++++++++++++ drivers/gpio/gpio-dwapb.c | 248 ++++----- drivers/gpio/gpio-f7188x.c | 33 +- drivers/gpio/gpio-ftgpio010.c | 2 +- drivers/gpio/gpio-ich.c | 2 +- drivers/gpio/gpio-max730x.c | 12 +- drivers/gpio/gpio-mb86s7x.c | 28 +- drivers/gpio/gpio-merrifield.c | 10 +- drivers/gpio/gpio-mlxbf2.c | 5 +- drivers/gpio/gpio-mm-lantiq.c | 2 +- drivers/gpio/gpio-pca953x.c | 96 ++-- drivers/gpio/gpio-pch.c | 73 +-- drivers/gpio/gpio-pl061.c | 9 +- drivers/gpio/gpio-rcar.c | 4 +- drivers/gpio/gpio-regmap.c | 349 +++++++++++++ drivers/gpio/gpio-tegra186.c | 1 + drivers/gpio/gpio-xgene-sb.c | 14 +- drivers/gpio/gpiolib-acpi.c | 6 +- drivers/gpio/gpiolib-devprop.c | 5 +- drivers/gpio/gpiolib-of.c | 10 + drivers/gpio/gpiolib.c | 165 ++++-- drivers/gpio/gpiolib.h | 27 +- drivers/i2c/busses/i2c-i801.c | 6 +- drivers/mfd/intel_quark_i2c_gpio.c | 1 - drivers/mfd/sm501.c | 24 +- include/linux/gpio/driver.h | 48 +- include/linux/gpio/machine.h | 17 +- include/linux/gpio/regmap.h | 86 ++++ include/linux/platform_data/gpio-dwapb.h | 1 - tools/gpio/lsgpio.c | 12 + 40 files changed, 1859 insertions(+), 447 deletions(-) create mode 100644 Documentation/admin-guide/gpio/gpio-aggregator.rst create mode 100644 Documentation/devicetree/bindings/gpio/renesas,em-gio.yaml create mode 100644 Documentation/devicetree/bindings/gpio/snps,dw-apb-gpio.yaml delete mode 100644 Documentation/devicetree/bindings/gpio/snps-dwapb-gpio.txt create mode 100644 drivers/gpio/gpio-aggregator.c create mode 100644 drivers/gpio/gpio-regmap.c create mode 100644 include/linux/gpio/regmap.h