[GIT PULL] gpio: updates for v6.8-rc1

From: Bartosz Golaszewski
Date: Tue Jan 09 2024 - 14:05:31 EST


From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>

Linus,

Here's the main pull-request for this merge window from the GPIO subsystem.
We have two new drivers, an assortment of updates and cleanups to many others,
and first part of the big rework of the core GPIOLIB that's currently underway.

Add to that some code shrink in the character device module and updates to DT
bindings and that's pretty much it.

There's a pull from Greg's branch for a new device property accessor that's
used by one of the GPIO driver and another from Andy's Intel tree. The pinctrl
commits in this PR have been Acked by Linus Walleij.

Details are in the signed tag.

Please pull,
Bartosz Golaszewski

The following changes since commit 861deac3b092f37b2c5e6871732f3e11486f7082:

Linux 6.7-rc7 (2023-12-23 16:25:56 -0800)

are available in the Git repository at:

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

for you to fetch changes up to 1979a28075470ef82472a5656ecc969f901e0d3b:

gpiolib: replace the GPIO device mutex with a read-write semaphore (2024-01-04 10:29:16 +0100)

----------------------------------------------------------------
gpio updates for v6.8

Core GPIOLIB:
- protect the global list of GPIO devices with a read-write semaphore as
it is rarely modified but can be traversed by multiple readers at once
- remove GPIO devices from the global list when they are *unregistered*
and not when they are *released* (which only happens when the last
reference is dropped) as this may lead to a successful lookup of an
unregistered device
- remove the unnecessary "extra_checks" switch
- rename functions that are called with a lock taken
- remove duplicate includes

Character device handling:
- use locking guards to reduce the code size
- allocate the big linereq structure using the more suitable kvzalloc()
- redulce the size of critical sections
- improve documentation
- move the debounce_period_us field out of struct gpio_desc

New drivers:
- Nuvoton NPCM SGPIO driver for BMC NPCM7xx/NPCM8xx
- Realtek DHC (Digital Home Center) SoC GPIO driver

Driver improvements:
- replace gpiochip_is_requested() with a safer alternative in the form of
gpiochip_dup_line_label() as the former returns a pointer to a string that
can be deleted
- implement the dbg_show() callback in gpio-sim
- improve the coding style for local variables by removing unnecessary tabs
- use generic device properties instead of OF variants in gpio-mmio
- use the preferred coding style for __free() in gpio-mockup
- reuse PM ops from the gpio-tangier in gpio-elkhartlake
- rework PM and use cleanup helpers in gpio-tangier
- fix the EIC configuration in gpio-pmic-eic-sprd
- remove the unneeded call to platform_set_drvdata() in gpio-sifive
- use generic GPIO helpers for driver callbacks in gpio-dwapb
- add clock support on certain pins of gpio-ixp4xx
- don't use the core-specific DEBUG_GPIO switch in drivers
- kerneldoc improvements

DT bindings:
- add bindings for the new Realtek and Nuvoton devices
- allow gpio-ranges in gpio-dwapb
- support GPIO hogs in gpio-rockchip
- describe the label property in gpio-zynqmp-modepin

Other:
- header cleanups
- forward declarations cleanups

----------------------------------------------------------------
Andrei Coardos (1):
gpio: sifive: remove unneeded call to platform_set_drvdata()

Andy Shevchenko (4):
Merge patch series "Use the standard _PM_OPS() export macro in Intel Tangier GPIO driver"
device property: Implement device_is_big_endian()
gpio: mmio: Make use of device properties
gpio: mmio: Clean up headers

Bartosz Golaszewski (30):
gpio: mockup: initialize a managed pointer in place
gpiolib: provide gpio_device_get_label()
Merge branch 'gpio/device_get_label_for_pinctrl' into gpio/for-next
gpio: sysfs: fix forward declaration of struct gpio_device
gpio: sim: fix the email address in MODULE_AUTHOR()
gpiolib: provide gpiochip_dup_line_label()
gpio: wm831x: use gpiochip_dup_line_label()
gpio: wm8994: use gpiochip_dup_line_label()
gpio: stmpe: use gpiochip_dup_line_label()
pinctrl: abx500: use gpiochip_dup_line_label()
pinctrl: nomadik: use gpiochip_dup_line_label()
pinctrl: baytrail: use gpiochip_dup_line_label()
pinctrl: sppctl: use gpiochip_dup_line_label()
gpiolib: use gpiochip_dup_line_label() in for_each helpers
gpiolib: remove gpiochip_is_requested()
Merge tag 'gpio-remove-gpiochip_is_requested-for-v6.8-rc1' into gpio/for-next
gpio: sim: implement the dbg_show() callback
gpiolib: allocate memory atomically with a spinlock held
gpio: xilinx: remove excess kernel doc
gpiolib: rename static functions that are called with the lock taken
gpiolib: use a mutex to protect the list of GPIO devices
Merge tag 'device_is_big_endian-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core into gpio/for-next
Merge tag 'intel-gpio-v6.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/andy/linux-gpio-intel into gpio/for-next
Merge tag 'v6.7-rc7' into gpio/for-next
gpio: tps65219: don't use CONFIG_DEBUG_GPIO
gpiolib: remove extra_checks
gpiolib: drop tabs from local variable declarations
gpio: sysfs: drop tabs from local variable declarations
gpiolib: remove the GPIO device from the list when it's unregistered
gpiolib: replace the GPIO device mutex with a read-write semaphore

Emil Renner Berthing (2):
dt-bindings: gpio: dwapb: allow gpio-ranges
gpio: dwapb: Use generic request, free and set_config

Heiko Stuebner (1):
dt-bindings: gpio: rockchip: add a pattern for gpio hogs

Jim Liu (2):
dt-bindings: gpio: add NPCM sgpio driver bindings
gpio: nuvoton: Add Nuvoton NPCM sgpio driver

Kent Gibson (9):
gpiolib: cdev: relocate debounce_period_us from struct gpio_desc
gpiolib: remove debounce_period_us from struct gpio_desc
gpiolib: cdev: fully adopt guard() and scoped_guard()
gpiolib: cdev: improve documentation of get/set values
gpiolib: cdev: reduce locking in gpio_desc_to_lineinfo()
gpiolib: cdev: include overflow.h
gpiolib: cdev: allocate linereq using kvzalloc()
gpiolib: cdev: replace locking wrappers for config_mutex with guards
gpiolib: cdev: replace locking wrappers for gpio_device with guards

Linus Walleij (1):
gpio: ixp4xx: Handle clock output on pin 14 and 15

Michal Simek (1):
dt-bindings: gpio: modepin: Describe label property

Raag Jadav (4):
gpio: tangier: use EXPORT_NS_GPL_SIMPLE_DEV_PM_OPS() helper
gpio: elkhartlake: reuse pm_ops from Intel Tangier driver
gpio: tangier: unexport suspend/resume handles
gpio: tangier: simplify locking using cleanup helpers

Randy Dunlap (1):
gpio: max730x: don't use kernel-doc marker for regular comment

Rob Herring (1):
dt-bindings: gpio: brcmstb: drop unneeded quotes

Tzuyi Chang (2):
dt-bindings: gpio: realtek: Add realtek,rtd-gpio
gpio: rtd: Add support for Realtek DHC(Digital Home Center) RTD SoCs

Wang Jinchao (1):
gpiolib: remove duplicate inclusions

Wenhua Lin (1):
gpio: pmic-eic-sprd: Configure the bit corresponding to the EIC through offset

.../bindings/gpio/brcm,brcmstb-gpio.yaml | 2 +-
.../devicetree/bindings/gpio/nuvoton,sgpio.yaml | 87 +++
.../devicetree/bindings/gpio/realtek,rtd-gpio.yaml | 69 +++
.../bindings/gpio/rockchip,gpio-bank.yaml | 7 +
.../devicetree/bindings/gpio/snps,dw-apb-gpio.yaml | 2 +
.../bindings/gpio/xlnx,zynqmp-gpio-modepin.yaml | 3 +
drivers/gpio/Kconfig | 20 +
drivers/gpio/Makefile | 2 +
drivers/gpio/gpio-dwapb.c | 13 +-
drivers/gpio/gpio-elkhartlake.c | 14 +-
drivers/gpio/gpio-ixp4xx.c | 51 +-
drivers/gpio/gpio-max730x.c | 2 +-
drivers/gpio/gpio-mmio.c | 53 +-
drivers/gpio/gpio-mockup.c | 3 +-
drivers/gpio/gpio-npcm-sgpio.c | 619 +++++++++++++++++++
drivers/gpio/gpio-pmic-eic-sprd.c | 19 +-
drivers/gpio/gpio-rtd.c | 604 +++++++++++++++++++
drivers/gpio/gpio-sifive.c | 1 -
drivers/gpio/gpio-sim.c | 24 +-
drivers/gpio/gpio-stmpe.c | 6 +-
drivers/gpio/gpio-tangier.c | 63 +-
drivers/gpio/gpio-tangier.h | 4 +-
drivers/gpio/gpio-tps65219.c | 18 +-
drivers/gpio/gpio-wm831x.c | 14 +-
drivers/gpio/gpio-wm8994.c | 13 +-
drivers/gpio/gpio-xilinx.c | 1 -
drivers/gpio/gpiolib-cdev.c | 667 ++++++++++-----------
drivers/gpio/gpiolib-sysfs.c | 110 ++--
drivers/gpio/gpiolib-sysfs.h | 10 +-
drivers/gpio/gpiolib.c | 274 +++++----
drivers/gpio/gpiolib.h | 7 +-
drivers/pinctrl/intel/pinctrl-baytrail.c | 11 +-
drivers/pinctrl/nomadik/pinctrl-abx500.c | 9 +-
drivers/pinctrl/nomadik/pinctrl-nomadik.c | 6 +-
drivers/pinctrl/sunplus/sppctl.c | 10 +-
include/linux/gpio/driver.h | 43 +-
include/linux/property.h | 26 +
37 files changed, 2185 insertions(+), 702 deletions(-)
create mode 100644 Documentation/devicetree/bindings/gpio/nuvoton,sgpio.yaml
create mode 100644 Documentation/devicetree/bindings/gpio/realtek,rtd-gpio.yaml
create mode 100644 drivers/gpio/gpio-npcm-sgpio.c
create mode 100644 drivers/gpio/gpio-rtd.c