[GIT PULL] GPIO bulk changes for v5.2

From: Linus Walleij
Date: Sat May 11 2019 - 04:46:46 EST


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