Hi Linus, here is the big pull request for GPIO for v5.2. A bit later than usual because I was ironing out my own mistakes. I'm holding some stuff back for the next kernel as a result, and this should be a healthy and well tested batch. I merged in v5.1-rc3 at one point to get rid of some nasty merge conflicts with one of the bigger fixes that went in in the early rcs. Other than that it is business as usual and a not very busy kernel cycle this time. Please pull it in! Yours, Linus Walleij The following changes since commit 79a3aaa7b82e3106be97842dedfd8429248896e6: Linux 5.1-rc3 (2019-03-31 14:39:29 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git tags/gpio-v5.2-1 for you to fetch changes up to 0fbee1df2078fa1f61e2da14f51ceb357c79ae69: gpio: Update documentation (2019-05-07 16:32:12 +0200) ---------------------------------------------------------------- This is the bulk of the GPIO changes for the v5.2 kernel cycle: Core changes: - The gpiolib MMIO driver has been enhanced to handle two direction registers, i.e. one register to set lines as input and one register to set lines as output. It turns out some silicon engineer thinks the ability to configure a line as input and output at the same time makes sense, this can be debated but includes a lot of analog electronics reasoning, and the registers are there and need to be handled consistently. Unsurprisingly, we enforce the lines to be either inputs or outputs in such schemes. - Send in the proper argument value to .set_config() dispatched to the pin control subsystem. Nobody used it before, now someone does, so fix it to work as expected. - The ACPI gpiolib portions can now handle pin bias setting (pull up or pull down). This has been in the ACPI spec for years and we finally have it properly integrated with Linux GPIOs. It was based on an observation from Andy Schevchenko that Thomas Petazzoni's changes to the core for biasing the PCA950x GPIO expander actually happen to fit hand-in-glove with what the ACPI core needed. Such nice synergies happen sometimes. New drivers: - A new driver for the Mellanox BlueField GPIO controller. This is using 64bit MMIO registers and can configure lines as inputs and outputs at the same time and after improving the MMIO library we handle it just fine. Interesting. - A new IXP4xx proper gpiochip driver with hierarchical interrupts should be coming in from the ARM SoC tree as well. Driver enhancements: - The PCA053x driver handles the CAT9554 GPIO expander. - The PCA053x driver handles the NXP PCAL6416 GPIO expander. - Wake-up support on PCA053x GPIO lines. - OMAP now does a nice asynchronous IRQ handling on wake-ups by letting everything wake up on edges, and this makes runtime PM work as expected too. Misc: - Several cleanups such as devres fixes. - Get rid of some languager comstructs that cause problems when compiling with LLVMs clang. - Documentation review and update. ---------------------------------------------------------------- Alexandre Belloni (3): gpio: pca953x: add pcal6416 to the of_device_id table dt-bindings: gpio: pca953x: document the nxp,pca6416 gpio: pca953x: add support for pca6416 Andrey Smirnov (7): gpio: vf610: Do not share irq_chip gpio: vf610: Simplify vf610_gpio_set() gpio: vf610: Simplify vf610_gpio_get() gpio: vf610: Use devres to disable clk_port gpio: vf610: Use devres to disable clk_gpio gpio: vf610: Use devres to remove gpiochip gpio: vf610: Don't use explicit &pdev->dev in vf610_gpio_probe() Andy Shevchenko (12): gpio: 74x164: Make use of device properties gpio: 74x164: Remove linux/init.h and sort headers gpio: 74x164: Convert to use SPDX identifier gpiolib: acpi: Fix references in kernel doc and amend gpiolib: Don't WARN on gpiod_put() for optional GPIO gpiolib: Indent entry values of enum gpio_lookup_flags gpiolib: Make use of enum gpio_lookup_flags consistent gpiolib: Introduce GPIO_LOOKUP_FLAGS_DEFAULT gpiolib: acpi: Change type of dflags gpiolib: acpi: Set pin value, based on bias, more accurately gpiolib: acpi: Add acpi_gpio_update_gpiod_lookup_flags() helper gpiolib: acpi: Respect pin bias setting Anson Huang (1): gpio: mxc: use devm_platform_ioremap_resource() to simplify code Arnd Bergmann (1): gpio: omap: avoid clang warning Bartosz Golaszewski (2): gpio: mockup: drop unneeded dependencies from Kconfig gpio: mockup: move the driver out of the IOMEM drivers section Enrico Weigelt, metux IT consult (36): drivers: gpio: Kconfig: pedantic formatting cleanups drivers: gpio: 74xx-mmio: use devm_platform_ioremap_resource() drivers: gpio: amdpt: use devm_platform_ioremap_resource() drivers: gpio: aspeed: use devm_platform_ioremap_resource() drivers: gpio: bcm-kona: use devm_platform_ioremap_resource() drivers: gpio: cadence: use devm_platform_ioremap_resource() drivers: gpio: clps711x: use devm_platform_ioremap_resource() drivers: gpio: dwap: use devm_platform_ioremap_resource() drivers: gpio: sprd: use devm_platform_ioremap_resource() drivers: gpio: ftgpio010: use devm_platform_ioremap_resource() drivers: gpio: hlwd: use devm_platform_ioremap_resource() drivers: gpio: iop: use devm_platform_ioremap_resource() drivers: gpio: janz-ttl: use devm_platform_ioremap_resource() drivers: gpio: loongon1: use devm_platform_ioremap_resource() drivers: gpio: lpc18xx: use devm_platform_ioremap_resource() drivers: gpio: mb86s7x: use devm_platform_ioremap_resource() drivers: gpio: mt7621: use devm_platform_ioremap_resource() drivers: gpio: mvebu: use devm_platform_ioremap_resource() drivers: gpio: mxc: use devm_platform_ioremap_resource() drivers: gpio: octeon: use devm_platform_ioremap_resource() drivers: gpio: pxa: use devm_platform_ioremap_resource() drivers: gpio: rcar: use devm_platform_ioremap_resource() drivers: gpio: spear-spics: use devm_platform_ioremap_resource() drivers: gpio: sta2x11: use devm_platform_ioremap_resource() drivers: gpio: stp-xway: use devm_platform_ioremap_resource() drivers: gpio: tb10x: use devm_platform_ioremap_resource() drivers: gpio: tegra: use devm_platform_ioremap_resource() drivers: gpio: timberdale: use devm_platform_ioremap_resource() drivers: gpio: ts4800: use devm_platform_ioremap_resource() drivers: gpio: uniphier: use devm_platform_ioremap_resource() drivers: gpio: vf610: use devm_platform_ioremap_resource() drivers: gpio: xgene-sb: use devm_platform_ioremap_resource() drivers: gpio: zx: use devm_platform_ioremap_resource() drivers: gpio: xlp: devm_platform_ioremap_resource() gpio: zynq: use devm_platform_ioremap_resource() gpio: omap: use devm_platform_ioremap_resource() Geert Uytterhoeven (5): dt-bindings: gpio: pca953x: Document onnn,cat9554 gpio: pca953x: Add support for CAT9554 gpio: Remove obsolete comment about gpiochip_free_hogs() usage gpio: of: Optimize quirk checks gpio: pca953x: Configure wake-up path when wake-up is enabled Jan Kiszka (1): gpio: sch: Remove write-only core_base Jan Kotas (1): gpio: mmio: Fix bgpio_get_set & bgpio_get_set_multiple Jan Kundrát (1): pinctrl: mcp23s08: debugfs: remove custom printer Linus Walleij (5): gpio: mmio: Support two direction registers gpio: mmio: Drop bgpio_dir_inverted Merge tag 'v5.1-rc3' into devel Merge tag 'gpio-v5.2-updates-for-linus-part1' of git://git.kernel.org/.../brgl/linux into devel gpio: Update documentation Mauro Carvalho Chehab (1): docs: gpio: convert docs to ReST and rename to *.rst Maxime Ripard (1): gpio: Set proper argument value to set_config Russell King (2): gpio: gpio-omap: configure edge detection for level IRQs for idle wakeup gpio: gpio-omap: Remove conditional pm_runtime handling for GPIO interrupts Shravan Kumar Ramani (2): gpio: add driver for Mellanox BlueField GPIO controller gpio: mlxbf: Add dependency on 64BIT to Kconfig entry Tony Lindgren (3): gpio: gpio-omap: limit errata 1.101 handling to wkup domain gpios only gpio: gpio-omap: always scan for triggered non-wakeup capable interrupts gpio: gpio-omap: add check for off wake capable gpios Uwe Kleine-König (1): tracing: stop making gpio tracing configurable YueHaibing (2): gpio: mlxbf: remove unused including <linux/version.h> gpio: pxa: Make two symbols static .../devicetree/bindings/gpio/gpio-pca953x.txt | 2 + Documentation/driver-api/gpio/driver.rst | 361 +++++++----- Documentation/gpio/index.rst | 17 + Documentation/gpio/{sysfs.txt => sysfs.rst} | 39 +- arch/arm/configs/aspeed_g4_defconfig | 1 - arch/arm/configs/aspeed_g5_defconfig | 1 - drivers/gpio/Kconfig | 83 +-- drivers/gpio/Makefile | 1 + drivers/gpio/gpio-74x164.c | 22 +- drivers/gpio/gpio-74xx-mmio.c | 4 +- drivers/gpio/gpio-amdpt.c | 8 +- drivers/gpio/gpio-aspeed.c | 4 +- drivers/gpio/gpio-bcm-kona.c | 4 +- drivers/gpio/gpio-cadence.c | 4 +- drivers/gpio/gpio-clps711x.c | 7 +- drivers/gpio/gpio-dwapb.c | 4 +- drivers/gpio/gpio-ftgpio010.c | 4 +- drivers/gpio/gpio-hlwd.c | 4 +- drivers/gpio/gpio-iop.c | 4 +- drivers/gpio/gpio-janz-ttl.c | 4 +- drivers/gpio/gpio-loongson1.c | 4 +- drivers/gpio/gpio-lpc18xx.c | 5 +- drivers/gpio/gpio-mb86s7x.c | 4 +- drivers/gpio/gpio-mlxbf.c | 152 +++++ drivers/gpio/gpio-mmio.c | 99 ++-- drivers/gpio/gpio-mt7621.c | 3 +- drivers/gpio/gpio-mvebu.c | 7 +- drivers/gpio/gpio-mxc.c | 4 +- drivers/gpio/gpio-octeon.c | 4 +- drivers/gpio/gpio-omap.c | 644 +++++++++------------ drivers/gpio/gpio-pca953x.c | 25 +- drivers/gpio/gpio-pxa.c | 12 +- drivers/gpio/gpio-rcar.c | 5 +- drivers/gpio/gpio-sch.c | 5 - drivers/gpio/gpio-spear-spics.c | 4 +- drivers/gpio/gpio-sprd.c | 4 +- drivers/gpio/gpio-sta2x11.c | 5 +- drivers/gpio/gpio-stp-xway.c | 4 +- drivers/gpio/gpio-tb10x.c | 4 +- drivers/gpio/gpio-tegra.c | 4 +- drivers/gpio/gpio-timberdale.c | 4 +- drivers/gpio/gpio-ts4800.c | 4 +- drivers/gpio/gpio-uniphier.c | 4 +- drivers/gpio/gpio-vf610.c | 92 ++- drivers/gpio/gpio-xgene-sb.c | 4 +- drivers/gpio/gpio-xlp.c | 7 +- drivers/gpio/gpio-zx.c | 4 +- drivers/gpio/gpio-zynq.c | 4 +- drivers/gpio/gpiolib-acpi.c | 115 ++-- drivers/gpio/gpiolib-of.c | 24 +- drivers/gpio/gpiolib.c | 43 +- drivers/gpio/gpiolib.h | 19 +- drivers/pinctrl/pinctrl-mcp23s08.c | 110 ---- include/linux/gpio/driver.h | 15 +- include/linux/gpio/machine.h | 26 +- include/linux/platform_data/gpio-omap.h | 2 - include/trace/events/gpio.h | 4 - kernel/trace/Kconfig | 7 - 58 files changed, 1052 insertions(+), 1012 deletions(-) create mode 100644 Documentation/gpio/index.rst rename Documentation/gpio/{sysfs.txt => sysfs.rst} (86%) create mode 100644 drivers/gpio/gpio-mlxbf.c