mbox series

[GIT,PULL] gpio updates for v6.13-rc1

Message ID 20241118125515.49743-1-brgl@bgdev.pl
State New
Headers show
Series [GIT,PULL] gpio updates for v6.13-rc1 | expand

Pull-request

git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git tags/gpio-updates-for-v6.13-rc1

Message

Bartosz Golaszewski Nov. 18, 2024, 12:55 p.m. UTC
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>

Linus,

Here's the majority of changes for this merge window from the GPIO subsystem.

We have three new drivers, support for some new models in existing ones and
lots of various tweaks and improvements across the board (switching to using
recommended APIs, code shrink and simplification, etc.).

We also have a new feature in the character device uAPI where we now notify
the user-space about changes triggered by in-kernel users as well, not only
when they were done by other user-space agents.

Details are in the signed tag as usual.

The merge commits you'll see here were done to pull Intel changes from Andy,
MFD dependencies from Lee and to pull back upstream fixes to avoid conflicts.

The non-gpio commits in this PR are either pulled from the MFD tree or were
acked by relevant maintainers and concern the removal of a deprecated GPIO
symbol from various drivers across the kernel tree.

I will be picking up some more fixes over the course of this week so there'll
be another small PR in the second week.

Please pull.

Best Regards,
Bartosz Golaszewski

The following changes since commit 59b723cd2adbac2a34fc8e12c74ae26ae45bf230:

  Linux 6.12-rc6 (2024-11-03 14:05:52 -1000)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git tags/gpio-updates-for-v6.13-rc1

for you to fetch changes up to bef29ca3a6458582ac13320d47bf2646e5734dc8:

  gpio: tegra186: Allow to enable driver on Tegra234 (2024-11-18 11:45:06 +0100)

----------------------------------------------------------------
gpio updates for v6.13-rc1

GPIOLIB core:
- use the new mem_is_zero() instead of memchr_inv(s, 0, n)
- don't store debounce period twice needlessly
- clean-up debugfs handling
- remove leftover comments referring to no longer used spinlocks
- unduplicate some operations like SRCU locks and initializing GPIO descriptors
- constify the sysfs class struct
- use lock guards in GPIO sysfs code
- update GPIO uAPI internal flags all at once atomically for consistency with
  other places
- modify the behavior of the sysfs interface by no longer exporting lines that
  are named inside the driver code or board files with the sysfs links bearing
  the line names as this has for many years been largely unused due to the
  prevalence of DT, ACPI and firmware nodes over board files and made the API
  inconsistent
- for GPIO interrupt providers: free irqs that are still requested by users
  when removing the chip

GPIO uAPI:
- notify user-space about changes to GPIO lines' state (requested, released,
  reconfigured) triggered from the kernel as well (until now we'd only do
  this for changes triggered from user-space)
- to that end: modify the internal workings of the notification mechanism by
  switching to an atomic notifier which allows us to send events from atomic
  context
- also to that end store the debounce period in the GPIO descriptor struct
  and not in the character device context struct
- while at it, also cover the corner-case of users introducing changes over
  sysfs while others watch them via the character device
- don't report GPIO lines requested as interrupts as "used" to user-space as it
  can still request them as GPIOs

New drivers:
- add a driver for the GPIO functionality of the MFD Congatec Board Controller
- add a driver for the PolarFire GPIO controller
- add a driver supporting the GPIOs on FTDI FT2232H

Driver improvements:
- use generic device property accessors instead of OF-specific ones across
  many GPIO drivers (mpc8xxx, vf610, eic-sprd, davinci, ts4900, xilinx, mvebu)
- use devres helpers to simplify error paths and either shrink or entirely
  remove the driver's remove() callback (grgpio, amdpt, menz127, max730x,
  ftgpio010, 74x164, ljca)
- use helper variables to store the address of pdev->dev and avoid some
  line-breaks
- use device_for_each_child_node_scoped() to avoid having to put the fwnode
  on breaks or errors (gpio-sim, gpio-dwapb, gpiolib-acpi)
- use a scoped bitmap to simplify the code and drop goto labels in
  gpio-aggregator
- drop unneeded Kconfig dependencies on OF_GPIO (grgpio, mveby, xilinx)
- add support for new models to gpio-aspeed, gpio-rockchip and gpio-dwapb
- clean-up ACPI handling and some other bits in gpio-xgene-sb
- replace deprecated PCI functions in pcie-idio-24 and pci-idio-16
- allow to build davinci and mvebu drivers with COMPILE_TEST=y
- remove dead code in gpio-mb86s7x
- switch back to using platform_driver::remove() (after the conversion to
  remove_new()) across the GPIO drivers
- remove remaining uses of GPIOF_ACTIVE_LOW across the tree and drop this
  deprecated symbol
- convert the gpio-altera driver to no longer pull in the deprecated
  legacy-of-mm-gpiochip.h header
- use of_property_present() instead of of_property_read_bool() in gpiolib-of
  and gpio-rockchip
- allow to build the tegra186 driver on Tegra234 platforms in Kconfig

Late fixes:
- add a missing return value check after devm_kasprintf() to gpio-grgpio

DT bindings:
- document the ngpios property of gpio-mmio
- add support for a new aspeed model
- fix the example for st,nomadik-gpio

Other:
- kernel doc and comments tweaks
- fix typos in TODO
- reorder headers alphabetically in some drivers
- fix incorrect format specifiers in gpio tools

----------------------------------------------------------------
Andy Shevchenko (13):
      gpio: xgene-sb: Remove unneeded definitions for properties
      gpio: xgene-sb: Drop ACPI_PTR() and CONFIG_ACPI guards
      gpio: xgene-sb: Tidy up ACPI and OF ID tables
      gpio: xgene-sb: don't use "proxy" headers
      gpio: mpsse: Check for error code from devm_mutex_init() call
      gpio: altera: Drop legacy-of-mm-gpiochip.h header
      Input: gpio_keys - avoid using GPIOF_ACTIVE_LOW
      Input: gpio_keys_polled - avoid using GPIOF_ACTIVE_LOW
      leds: gpio: Avoid using GPIOF_ACTIVE_LOW
      pcmcia: soc_common: Avoid using GPIOF_ACTIVE_LOW
      USB: gadget: pxa27x_udc: Avoid using GPIOF_ACTIVE_LOW
      gpio: Get rid of GPIOF_ACTIVE_LOW
      gpiolib: cdev: use !mem_is_zero() instead of memchr_inv(s, 0, n)

Arnd Bergmann (1):
      gpiolib: avoid format string weakness in workqueue interface

Bartosz Golaszewski (52):
      gpio: free irqs that are still requested when the chip is being removed
      gpio: sysfs: make the sysfs export behavior consistent
      gpio: aggregator: simplify aggr_parse() with scoped bitmap
      gpio: mvebu: allow building the module with COMPILE_TEST=y
      gpio: mvebu: use generic device properties
      gpio: xilinx: drop dependency on GPIO_OF
      gpio: xilinx: use helper variable to store the address of pdev->dev
      gpio: xilinx: use generic device properties
      gpiolib: use v2 defines for line state change events
      gpiolib: unify two loops initializing GPIO descriptors
      gpio: cdev: update flags at once when reconfiguring from user-space
      Merge tag 'ib-mfd-gpio-i2c-watchdog-v6.13' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/lee/mfd into gpio/for-next
      Merge tag 'v6.12-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into gpio/for-next
      gpio: mvebu: drop dependency on OF_GPIO
      gpio: ts4900: use generic device properties
      gpio: davinci: allow building the module with COMPILE_TEST=y
      gpio: davinci: use generic device properties
      gpio: eic-sprd: use generic device_get_match_data()
      gpio: vf610: use generic device_get_match_data()
      gpio: mpc8xxx: use a helper variable to store the address of pdev->dev
      gpio: mpc8xxx: use generic device_is_compatible()
      gpio: ljca: use devm_mutex_init() to simplify the error path and remove()
      gpio: sysfs: constify gpio class
      gpio: fold the Kconfig prompt into the option type for GPIO CDEV
      gpio: amdpt: remove remove()
      gpio: menz127: simplify error path and remove remove()
      gpio: 74x164: shrink code
      gpio: ftgpio010: shrink code
      gpio: max730x: use devres to shrink and simplify code
      gpiolib: notify user-space when a driver requests its own desc
      gpiolib: unduplicate chip guard in set_config path
      gpio: cdev: go back to storing debounce period in the GPIO descriptor
      gpio: cdev: prepare gpio_desc_to_lineinfo() for being called from atomic
      gpiolib: add a per-gpio_device line state notification workqueue
      gpio: cdev: put emitting the line state events on a workqueue
      gpiolib: switch the line state notifier to atomic
      gpiolib: notify user-space about in-kernel line state changes
      gpio: grgpio: drop Kconfig dependency on OF_GPIO
      gpio: grgpio: order headers alphabetically
      gpio: grgpio: use a helper variable to store the address of ofdev->dev
      gpio: grgpio: remove remove()
      gpiolib: fix a NULL-pointer dereference when setting direction
      gpiolib: remove leftover spinlock bits
      gpio: sysfs: demote warning messages on invalid user input to debug
      Merge tag 'v6.12-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into gpio/for-next
      gpio: sysfs: use cleanup guards for gpiod_data::mutex
      gpio: sysfs: use cleanup guards for the sysfs_lock mutex
      gpio: sysfs: emit chardev line-state events on GPIO export
      gpio: sysfs: emit chardev line-state events on active-low changes
      gpio: sysfs: emit chardev line-state events on edge store
      gpio: cdev: don't report GPIOs requested as interrupts as used
      Merge tag 'intel-gpio-v6.13-1' of git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel into gpio/for-next

Billy Tsai (5):
      gpio: aspeed: Change the macro to support deferred probe
      gpio: aspeed: Remove the name for bank array
      gpio: aspeed: Create llops to handle hardware access
      dt-bindings: gpio: aspeed,ast2400-gpio: Support ast2700
      gpio: aspeed: Support G7 Aspeed gpio controller

Charles Han (1):
      gpio: grgpio: Add NULL check in grgpio_probe

Conor Dooley (2):
      MAINTAINERS: add gpio driver to PolarFire entry
      gpio: mpfs: add CoreGPIO support

Dan Carpenter (1):
      gpio: mb86s7x: remove some dead code in mb86s70_gpio_to_irq()

Javier Carrasco (3):
      gpio: acpi: switch to device_for_each_child_node_scoped()
      gpio: dwapb: switch to device_for_each_child_node_scoped()
      gpio: sim: switch to device_for_each_child_node_scoped()

Johan Hovold (1):
      gpiolib: clean up debugfs separator handling

Kent Gibson (2):
      gpiolib: cdev: Fix reference to linereq_set_config_unlocked()
      gpiolib: cdev: remove redundant store of debounce_period_us

Lars-Peter Clausen (1):
      gpio: tegra186: Allow to enable driver on Tegra234

Lewis Hanly (1):
      gpio: mpfs: add polarfire soc gpio support

Linus Walleij (1):
      dt-bindings: gpio-mmio: Add ngpios property

Luo Yifan (1):
      tools: gpio: Fix several incorrect format specifiers

Mary Strodl (1):
      gpio: add support for FTDI's MPSSE as GPIO

Rob Herring (Arm) (2):
      dt-bindings: gpio: st,nomadik-gpio: Add missing "#interrupt-cells" to example
      gpio: Use of_property_present() for non-boolean properties

Shivam Chaudhary (1):
      Fix typos in GPIO TODO document

Srikar Dronamraju (1):
      gpio: sloppy-logic-analyzer remove reference to rcu_momentary_dyntick_idle()

Thomas Richard (5):
      mfd: Add Congatec Board Controller driver
      gpio: Congatec Board Controller gpio driver
      i2c: Congatec Board Controller i2c bus driver
      watchdog: Congatec Board Controller watchdog timer driver
      MAINTAINERS: Add entry for Congatec Board Controller

Uwe Kleine-König (1):
      gpio: Switch back to struct platform_driver::remove()

William Breathitt Gray (2):
      gpio: pci-idio-16: Replace deprecated PCI functions
      gpio: pcie-idio-24: Replace deprecated PCI functions

Ye Zhang (3):
      gpio: rockchip: explan the format of the GPIO version ID
      gpio: rockchip: change the GPIO version judgment logic
      gpio: rockchip: support new version GPIO

Yoshihiro Furudera (1):
      gpio: dwapb: Add ACPI HID for DWAPB GPIO controller on Fujitsu MONAKA

 .../bindings/gpio/aspeed,ast2400-gpio.yaml         |  19 +-
 .../devicetree/bindings/gpio/gpio-mmio.yaml        |  13 +-
 .../devicetree/bindings/gpio/st,nomadik-gpio.yaml  |   1 +
 MAINTAINERS                                        |  10 +
 drivers/gpio/Kconfig                               |  41 +-
 drivers/gpio/Makefile                              |   3 +
 drivers/gpio/TODO                                  |   4 +-
 drivers/gpio/gpio-74x164.c                         |  21 +-
 drivers/gpio/gpio-aggregator.c                     |  16 +-
 drivers/gpio/gpio-altera.c                         | 178 +++---
 drivers/gpio/gpio-amdpt.c                          |  10 +-
 drivers/gpio/gpio-aspeed.c                         | 618 +++++++++++++--------
 drivers/gpio/gpio-brcmstb.c                        |   2 +-
 drivers/gpio/gpio-cadence.c                        |   2 +-
 drivers/gpio/gpio-cgbc.c                           | 196 +++++++
 drivers/gpio/gpio-davinci.c                        |  10 +-
 drivers/gpio/gpio-dln2.c                           |   2 +-
 drivers/gpio/gpio-dwapb.c                          |   5 +-
 drivers/gpio/gpio-eic-sprd.c                       |   4 +-
 drivers/gpio/gpio-ftgpio010.c                      |  45 +-
 drivers/gpio/gpio-grgpio.c                         |  75 +--
 drivers/gpio/gpio-ljca.c                           |  17 +-
 drivers/gpio/gpio-lpc18xx.c                        |   2 +-
 drivers/gpio/gpio-max730x.c                        |  17 +-
 drivers/gpio/gpio-mb86s7x.c                        |   4 +-
 drivers/gpio/gpio-menz127.c                        |  58 +-
 drivers/gpio/gpio-mm-lantiq.c                      |   2 +-
 drivers/gpio/gpio-mpc5200.c                        |   4 +-
 drivers/gpio/gpio-mpc8xxx.c                        |  56 +-
 drivers/gpio/gpio-mpfs.c                           | 188 +++++++
 drivers/gpio/gpio-mpsse.c                          | 527 ++++++++++++++++++
 drivers/gpio/gpio-mvebu.c                          |   8 +-
 drivers/gpio/gpio-omap.c                           |   2 +-
 drivers/gpio/gpio-pci-idio-16.c                    |  17 +-
 drivers/gpio/gpio-pcie-idio-24.c                   |  19 +-
 drivers/gpio/gpio-rcar.c                           |   2 +-
 drivers/gpio/gpio-rockchip.c                       |  28 +-
 drivers/gpio/gpio-sim.c                            |   7 +-
 drivers/gpio/gpio-sloppy-logic-analyzer.c          |   2 +-
 drivers/gpio/gpio-tb10x.c                          |   2 +-
 drivers/gpio/gpio-ts4900.c                         |   6 +-
 drivers/gpio/gpio-ts5500.c                         |   2 +-
 drivers/gpio/gpio-uniphier.c                       |   2 +-
 drivers/gpio/gpio-vf610.c                          |   7 +-
 drivers/gpio/gpio-xgene-sb.c                       |  39 +-
 drivers/gpio/gpio-xgs-iproc.c                      |   2 +-
 drivers/gpio/gpio-xilinx.c                         |  51 +-
 drivers/gpio/gpio-zynq.c                           |   2 +-
 drivers/gpio/gpiolib-acpi.c                        |   4 +-
 drivers/gpio/gpiolib-cdev.c                        | 384 ++++++-------
 drivers/gpio/gpiolib-legacy.c                      |   3 -
 drivers/gpio/gpiolib-of.c                          |   2 +-
 drivers/gpio/gpiolib-sysfs.c                       | 182 +++---
 drivers/gpio/gpiolib.c                             | 202 +++++--
 drivers/gpio/gpiolib.h                             |  14 +-
 drivers/i2c/busses/Kconfig                         |  10 +
 drivers/i2c/busses/Makefile                        |   1 +
 drivers/i2c/busses/i2c-cgbc.c                      | 406 ++++++++++++++
 drivers/input/keyboard/gpio_keys.c                 |  10 +-
 drivers/input/keyboard/gpio_keys_polled.c          |  12 +-
 drivers/leds/leds-gpio.c                           |   9 +-
 drivers/mfd/Kconfig                                |  12 +
 drivers/mfd/Makefile                               |   1 +
 drivers/mfd/cgbc-core.c                            | 411 ++++++++++++++
 drivers/pcmcia/soc_common.c                        |  12 +-
 drivers/usb/gadget/udc/pxa27x_udc.c                |   7 +-
 drivers/watchdog/Kconfig                           |  10 +
 drivers/watchdog/Makefile                          |   1 +
 drivers/watchdog/cgbc_wdt.c                        | 211 +++++++
 include/linux/gpio.h                               |   3 -
 include/linux/mfd/cgbc.h                           |  44 ++
 tools/gpio/gpio-event-mon.c                        |   8 +-
 tools/gpio/gpio-sloppy-logic-analyzer.sh           |   2 +-
 73 files changed, 3245 insertions(+), 1064 deletions(-)
 create mode 100644 drivers/gpio/gpio-cgbc.c
 create mode 100644 drivers/gpio/gpio-mpfs.c
 create mode 100644 drivers/gpio/gpio-mpsse.c
 create mode 100644 drivers/i2c/busses/i2c-cgbc.c
 create mode 100644 drivers/mfd/cgbc-core.c
 create mode 100644 drivers/watchdog/cgbc_wdt.c
 create mode 100644 include/linux/mfd/cgbc.h