Hi Linus, here is the GPIO pull request for the bulk of changes for v5.7. There will be at least one conflict due to me fingering around and renaming variables. It is pretty straight-forward to resolve: in the gpiochip_irq_disable() what is in your branch came in as a late fix and that is what should stay, with the variable "chip" renamed to "gc". Sorry for messing with this so late in the cycle. We have some patches to kfifo ACKed by the kfifo maintainer, details about this can be found in the signed tag. We have some two patches to arch/arm written by the maintainers for these same platforms. Please pull it in! Yours, Linus Walleij The following changes since commit 16fbf79b0f83bc752cee8589279f1ebfe57b3b6e: Linux 5.6-rc7 (2020-03-22 18:31:56 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git tags/gpio-v5.7-1 for you to fetch changes up to 4ed7d7dd4890bb8120a3e77c16191a695fdfcc5a: Revert "gpio: eic-sprd: Use devm_platform_ioremap_resource()" (2020-04-02 09:39:09 +0200) ---------------------------------------------------------------- This is the bulk of GPIO development for the v5.7 kernel cycle. Core and userspace API: - The userspace API KFIFOs have been imoproved with locks that do not block interrupts. This makes us better at getting events to userspace without blocking or disturbing new events arriving in the same time. This was reviewed by the KFIFO maintainer Stefani. This is a generic improvement which paves the road for similar improvements in other subsystems. - We provide a new ioctl() for monitoring changes in the line information, such as when multiple clients are taking lines and giving them back, possibly reconfiguring them in the process: we can now monitor that and not get stuck with stale static information. - An example tool 'gpio-watch' is provided to showcase this functionality. - Timestamps for events are switched to ktime_get_ns() which is monotonic. We previously had a 'realtime' stamp which could move forward and *backward* in time, which probably would just cause silent bugs and weird behaviour. In the long run we see two relevant timestamps: ktime_get_ns() or the timestamp sometimes provided by the GPIO hardware itself, if that exists. - Device Tree overlay support for GPIO hogs. On systems that load overlays, these overlays can now contain hogs, and will then be respected. - Handle pin control interaction with nonexisting pin ranges in the GPIO library core instead of in the individual drivers. New drivers: - New driver for the Mellanox BlueField 2 GPIO controller. Driver improvements: - Introduce the BGPIOF_NO_SET_ON_INPUT flag to the generic MMIO GPIO library and use this flag in the MT7621 driver. - Texas Instruments OMAP CPU power management improvements, such as blocking of idle on pending GPIO interrupts. ---------------------------------------------------------------- Alexander Sverdlin (1): gpio: pl061: Warn when IRQ line has not been configured Andy Shevchenko (3): gpio: Avoid kernel.h inclusion where it's possible gpiolib: Optimize gpiochip_remove() when check for requested line gpiolib: Rename 'event' to 'ge' to be consistent with other use Anson Huang (2): gpio: mxc: Add COMPILE_TEST support for GPIO_MXC gpio: mxs: add COMPILE_TEST support for GPIO_MXS Anssi Hannula (1): tools: gpio: Fix out-of-tree build regression Ashish Chavan (1): gpio: rcar: Fix typo in comment Asmaa Mnebhi (1): gpio: add driver for Mellanox BlueField 2 GPIO controller Axel Lin (2): gpio: wcd934x: Don't change gpio direction in wcd_gpio_set gpio: wcd934x: Fix logic of wcd_gpio_get Baolin Wang (1): Revert "gpio: eic-sprd: Use devm_platform_ioremap_resource()" Bartosz Golaszewski (10): kfifo: provide noirqsave variants of spinlocked in and out helpers kfifo: provide kfifo_is_empty_spinlocked() gpiolib: rework the locking mechanism for lineevent kfifo gpiolib: emit a debug message when adding events to a full kfifo gpiolib: provide a dedicated function for setting lineinfo gpiolib: add new ioctl() for monitoring changes in line info tools: gpio: implement gpio-watch gpio: mockup: coding-style fix gpiolib: use gpiochip_get_desc() where applicable gpiolib: fix bitmap operations related to line event watching Chris Packham (1): gpio: mvebu: avoid error message for optional IRQ Chuanhong Guo (2): gpio: mmio: introduce BGPIOF_NO_SET_ON_INPUT gpio: mt7621: add BGPIOF_NO_SET_ON_INPUT flag Colin Ian King (1): tools: gpio-hammer: fix spelling mistake: "occurences" -> "occurrences" Doug Berger (1): gpio: brcmstb: support gpio-line-names property Gabriel Ravier (2): tools: gpio-hammer: Avoid potential overflow in main tools: gpio-hammer: Apply scripts/Lindent and retain good changes Geert Uytterhoeven (7): gpio: of: Extract of_gpiochip_add_hog() gpio: of: Add DT overlay support for GPIO hogs gpiolib: Fix inverted check in gpiochip_remove() ARM: integrator: impd1: Use GPIO_LOOKUP() helper macro gpiolib: Introduce gpiod_set_config() gpiolib: Pass gpio_desc to gpio_set_config() gpiolib: Remove unused gpio_chip parameter from gpio_set_bias() Gustavo A. R. Silva (1): gpio: uniphier: Replace zero-length array with flexible-array member Jonathan Neuschäfer (1): gpio: uapi: Improve phrasing around arrays representing empty strings Kent Gibson (1): gpiolib: fix unwatch ioctl() Linus Walleij (8): Merge tag 'gpio-updates-for-v5.7-part1' of git://git.kernel.org/.../brgl/linux into devel gpio: Switch timestamps to ktime_get_ns() Merge tag 'gpio-updates-for-v5.7-part2' of git://git.kernel.org/.../brgl/linux into devel Merge branch 'ib-omap-block-idle' into devel gpio: Move devres calls to devres file Merge tag 'gpio-updates-for-v5.7-part4' of git://git.kernel.org/.../brgl/linux into devel Merge tag 'v5.6-rc7' into devel gpio: Rename variable in core APIs Lubomir Rintel (1): gpio: pxa: Avoid a warning when gpio0 and gpio1 IRQS are not there Mauro Carvalho Chehab (2): docs: gpio: driver.rst: don't mark literal blocks twice gpio: gpiolib: fix a doc warning Michał Mirosław (1): gpiolib: gpio_name_to_desc: factor out !name check Mykyta Poturai (1): tools: gpio: Fix typo in gpio-utils Stephen Rothwell (1): gpio: export of_pinctrl_get to modules Thierry Reding (7): gpio: Support GPIO controllers without pin-ranges gpio: tegra186: Add support for pin ranges gpio: tegra186: Add Tegra194 pin ranges for GG.0 and GG.1 gpio: Avoid using pin ranges with !PINCTRL pinctrl: Define of_pinctrl_get() dummy for !PINCTRL gpio: Unconditionally assign .request()/.free() pinctrl: Unconditionally assign .request()/.free() Tony Lindgren (3): ARM: OMAP2+: Handle errors for cpu_pm gpio: omap: Block idle on pending gpio interrupts Revert "gpio: omap: Fix lost edge wake-up interrupts" Uwe Kleine-König (1): gpio: siox: use raw spinlock for irq related locking Documentation/driver-api/gpio/driver.rst | 4 +- arch/arm/mach-integrator/impd1.c | 11 +- arch/arm/mach-omap2/cpuidle34xx.c | 9 +- arch/arm/mach-omap2/cpuidle44xx.c | 26 +- arch/arm/mach-omap2/pm34xx.c | 8 +- drivers/gpio/Kconfig | 11 +- drivers/gpio/Makefile | 1 + drivers/gpio/gpio-brcmstb.c | 44 + drivers/gpio/gpio-davinci.c | 7 +- drivers/gpio/gpio-eic-sprd.c | 9 +- drivers/gpio/gpio-mlxbf2.c | 335 ++++++++ drivers/gpio/gpio-mmio.c | 23 +- drivers/gpio/gpio-mockup.c | 2 +- drivers/gpio/gpio-mt7621.c | 4 +- drivers/gpio/gpio-mvebu.c | 2 +- drivers/gpio/gpio-mxc.c | 7 +- drivers/gpio/gpio-omap.c | 29 +- drivers/gpio/gpio-pl061.c | 13 +- drivers/gpio/gpio-pxa.c | 11 +- drivers/gpio/gpio-rcar.c | 4 +- drivers/gpio/gpio-siox.c | 28 +- drivers/gpio/gpio-tegra186.c | 64 ++ drivers/gpio/gpio-uniphier.c | 2 +- drivers/gpio/gpio-wcd934x.c | 9 +- drivers/gpio/gpio-zx.c | 10 +- drivers/gpio/gpiolib-devres.c | 46 ++ drivers/gpio/gpiolib-of.c | 139 +++- drivers/gpio/gpiolib-of.h | 2 + drivers/gpio/gpiolib.c | 1297 +++++++++++++++++------------- drivers/gpio/gpiolib.h | 4 + drivers/pinctrl/devicetree.c | 1 + drivers/pinctrl/pinctrl-ingenic.c | 7 +- include/asm-generic/gpio.h | 4 +- include/linux/gpio.h | 2 - include/linux/gpio/consumer.h | 13 +- include/linux/gpio/driver.h | 139 ++-- include/linux/kfifo.h | 73 ++ include/linux/of_gpio.h | 9 +- include/linux/pinctrl/pinctrl.h | 2 +- include/uapi/linux/gpio.h | 38 +- tools/gpio/.gitignore | 1 + tools/gpio/Build | 1 + tools/gpio/Makefile | 13 +- tools/gpio/gpio-hammer.c | 19 +- tools/gpio/gpio-utils.c | 6 +- tools/gpio/gpio-watch.c | 99 +++ 46 files changed, 1814 insertions(+), 774 deletions(-) create mode 100644 drivers/gpio/gpio-mlxbf2.c create mode 100644 tools/gpio/gpio-watch.c