]> git.ipfire.org Git - thirdparty/linux.git/log
thirdparty/linux.git
2 weeks agogpio: virtio: Fix config space reading.
Harald Mommer [Thu, 24 Jul 2025 14:36:53 +0000 (16:36 +0200)] 
gpio: virtio: Fix config space reading.

Quote from the virtio specification chapter 4.2.2.2:

"For the device-specific configuration space, the driver MUST use 8 bit
wide accesses for 8 bit wide fields, 16 bit wide and aligned accesses
for 16 bit wide fields and 32 bit wide and aligned accesses for 32 and
64 bit wide fields."

Signed-off-by: Harald Mommer <harald.mommer@oss.qualcomm.com>
Cc: stable@vger.kernel.org
Fixes: 3a29355a22c0 ("gpio: Add virtio-gpio driver")
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Link: https://lore.kernel.org/r/20250724143718.5442-2-harald.mommer@oss.qualcomm.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
2 weeks agogpiolib: make legacy interfaces optional
Arnd Bergmann [Tue, 22 Jul 2025 15:35:43 +0000 (17:35 +0200)] 
gpiolib: make legacy interfaces optional

The traditional interfaces are only used on a small number of ancient
boards. Make these optional now so they can be disabled by default.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Alexander Sverdlin <alexander.sverdlin@gmail.com>
Link: https://lore.kernel.org/r/20250722153634.3683927-1-arnd@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
2 weeks agoMerge tag 'ib-mfd-gpio-power-soc-v6.17' of git://git.kernel.org/pub/scm/linux/kernel...
Bartosz Golaszewski [Thu, 24 Jul 2025 11:27:21 +0000 (13:27 +0200)] 
Merge tag 'ib-mfd-gpio-power-soc-v6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd into gpio/for-next

Immutable branch between MFD, GPIO, Power and SoC due for the v6.17 merge window

2 weeks agodt-bindings: gpio: rockchip: Allow use of a power-domain
Jonas Karlman [Wed, 23 Jul 2025 08:56:43 +0000 (08:56 +0000)] 
dt-bindings: gpio: rockchip: Allow use of a power-domain

The GPIO controllers in most Rockchip SoCs are part of power domains
that are always powered on, i.e. PD_BUS or PD_PMU. These always powered
on power domains have typically not been described in the device tree.

Because these power domains have been left out of the device tree there
has not been any real need to properly describe the GPIO controllers
power domain.

On RK3528 the GPIO controllers are spread out among the described
PD_RKVENC, PD_VO and PD_VPU power domains. However, one GPIO controller
belong to an undescribed always powered on power domain.

Add support to describe an optional power-domains for the GPIO
controllers in Rockchip SoCs.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250723085654.2273324-2-jonas@kwiboo.se
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
2 weeks agogpiolib: of: add forward declaration for struct device_node
Andrei Lalaev [Mon, 21 Jul 2025 15:57:37 +0000 (17:57 +0200)] 
gpiolib: of: add forward declaration for struct device_node

Commit 08a149c40bdb ("gpiolib: Clean up headers") added a forward
declaration for struct device.

Later, commit 07445ae1c263 ("gpiolib: of: change of_find_gpio() to
accept device node") changed the function signature to accept a struct
device_node instead of a struct device.

Replace forward declaration of struct device with struct device_node to
match the updated function signature.

Signed-off-by: Andrei Lalaev <andrey.lalaev@gmail.com>
Link: https://lore.kernel.org/r/20250721155737.261990-1-andrey.lalaev@gmail.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
2 weeks agopower: reset: macsmc-reboot: Add driver for rebooting via Apple SMC
Hector Martin [Tue, 10 Jun 2025 15:29:48 +0000 (15:29 +0000)] 
power: reset: macsmc-reboot: Add driver for rebooting via Apple SMC

This driver implements the reboot/shutdown support exposed by the SMC
on Apple Silicon machines, such as Apple M1 Macs.

Signed-off-by: Hector Martin <marcan@marcan.st>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Sven Peter <sven@kernel.org>
Link: https://lore.kernel.org/r/20250610-smc-6-15-v7-7-556cafd771d3@kernel.org
Signed-off-by: Lee Jones <lee@kernel.org>
2 weeks agogpio: Add new gpio-macsmc driver for Apple Macs
Hector Martin [Tue, 10 Jun 2025 15:29:47 +0000 (15:29 +0000)] 
gpio: Add new gpio-macsmc driver for Apple Macs

This driver implements the GPIO service on top of the SMC framework
on Apple Mac machines. In particular, these are the GPIOs present in the
PMU IC which are used to control power to certain on-board devices.

Although the underlying hardware supports various pin config settings
(input/output, open drain, etc.), this driver does not implement that
functionality and leaves it up to the firmware to configure things
properly. We also don't yet support interrupts/events. This is
sufficient for device power control, which is the only thing we need to
support at this point. More features will be implemented when needed.

To our knowledge, only Apple Silicon Macs implement this SMC feature.

Signed-off-by: Hector Martin <marcan@marcan.st>
Reviewed-by: Bartosz Golaszewski <brgl@bgdev.pl>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Sven Peter <sven@kernel.org>
Signed-off-by: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Signed-off-by: Sven Peter <sven@kernel.org>
Acked-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/r/20250610-smc-6-15-v7-6-556cafd771d3@kernel.org
Signed-off-by: Lee Jones <lee@kernel.org>
2 weeks agomfd: Add Apple Silicon System Management Controller
Sven Peter [Tue, 10 Jun 2025 15:29:46 +0000 (15:29 +0000)] 
mfd: Add Apple Silicon System Management Controller

The System Management Controller (SMC) on Apple Silicon machines is a
piece of hardware that exposes various functionalities such as
temperature sensors, voltage/power meters, shutdown/reboot handling,
GPIOs and more.

Communication happens via a shared mailbox using the RTKit protocol
which is also used for other co-processors. The SMC protocol then allows
reading and writing many different keys which implement the various
features. The MFD core device handles this protocol and exposes it
to the sub-devices.

Some of the sub-devices are potentially also useful on pre-M1 Apple
machines and support for SMCs on these machines can be added at a later
time.

Co-developed-by: Hector Martin <marcan@marcan.st>
Signed-off-by: Hector Martin <marcan@marcan.st>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Signed-off-by: Sven Peter <sven@kernel.org>
Link: https://lore.kernel.org/r/20250610-smc-6-15-v7-5-556cafd771d3@kernel.org
Signed-off-by: Lee Jones <lee@kernel.org>
2 weeks agosoc: apple: rtkit: Make shmem_destroy optional
Sven Peter [Tue, 10 Jun 2025 15:29:45 +0000 (15:29 +0000)] 
soc: apple: rtkit: Make shmem_destroy optional

shmem_destroy isn't always required for coprocessor-managed buffers but we
still enforce that it exists. Just relax the check.

Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Signed-off-by: Sven Peter <sven@kernel.org>
Link: https://lore.kernel.org/r/20250610-smc-6-15-v7-4-556cafd771d3@kernel.org
Signed-off-by: Lee Jones <lee@kernel.org>
2 weeks agodt-bindings: mfd: Add Apple Mac System Management Controller
Russell King (Oracle) [Tue, 10 Jun 2025 15:29:44 +0000 (15:29 +0000)] 
dt-bindings: mfd: Add Apple Mac System Management Controller

Add a DT binding for the Apple Mac System Management Controller.

Signed-off-by: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Signed-off-by: Sven Peter <sven@kernel.org>
Link: https://lore.kernel.org/r/20250610-smc-6-15-v7-3-556cafd771d3@kernel.org
Signed-off-by: Lee Jones <lee@kernel.org>
2 weeks agodt-bindings: power: reboot: Add Apple Mac SMC Reboot Controller
Sven Peter [Tue, 10 Jun 2025 15:29:43 +0000 (15:29 +0000)] 
dt-bindings: power: reboot: Add Apple Mac SMC Reboot Controller

On Apple Silicon machines a clean shutdown or reboot requires
talking to SMC and writing to NVMEM cells. Add a binding for
this MFD sub-device.

Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Reviewed-by: "Rob Herring (Arm)" <robh@kernel.org>
Signed-off-by: Sven Peter <sven@kernel.org>
Link: https://lore.kernel.org/r/20250610-smc-6-15-v7-2-556cafd771d3@kernel.org
Signed-off-by: Lee Jones <lee@kernel.org>
2 weeks agodt-bindings: gpio: Add Apple Mac SMC GPIO block
Russell King (Oracle) [Tue, 10 Jun 2025 15:29:42 +0000 (15:29 +0000)] 
dt-bindings: gpio: Add Apple Mac SMC GPIO block

Add the DT binding for the Apple Mac System Management Controller GPIOs.

Signed-off-by: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Neal Gompa <neal@gompa.dev>
Reviewed-by: "Rob Herring (Arm)" <robh@kernel.org>
Signed-off-by: Sven Peter <sven@kernel.org>
Link: https://lore.kernel.org/r/20250610-smc-6-15-v7-1-556cafd771d3@kernel.org
Signed-off-by: Lee Jones <lee@kernel.org>
2 weeks agogpio: cadence: Remove duplicated include in gpio-cadence.c
Yang Li [Wed, 23 Jul 2025 06:46:08 +0000 (14:46 +0800)] 
gpio: cadence: Remove duplicated include in gpio-cadence.c

The header files linux/gpio/driver.h is included twice in gpio-cadence.c,
so one inclusion of each can be removed.

Reported-by: Abaci Robot <abaci@linux.alibaba.com>
Closes: https://bugzilla.openanolis.cn/show_bug.cgi?id=22931
Signed-off-by: Yang Li <yang.lee@linux.alibaba.com>
Link: https://lore.kernel.org/r/20250723064608.2178024-1-yang.lee@linux.alibaba.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
2 weeks agogpio: tps65219: Add support for TI TPS65214 PMIC
Shree Ramamoorthy [Tue, 22 Jul 2025 18:16:09 +0000 (13:16 -0500)] 
gpio: tps65219: Add support for TI TPS65214 PMIC

Add support for the TI TPS65214 PMIC with the addition of an id_table,
separate TPS65214 template_chip, and device-specific _change_direction
functions.

- Use platform_get_device_id() to assign dev-specific information.
- Use different change_direction() functions since TPS65214's GPIO
  configuration bits are changeable during device operation through bit
  GPIO_CONFIG in GENERAL_CONFIG register.
- Remove MODULE_ALIAS since it is now generated by MODULE_DEVICE_TABLE.

Reviewed-by: Jonathan Cormier <jcormier@criticallink.com>
Tested-by: Jonathan Cormier <jcormier@criticallink.com>
Signed-off-by: Shree Ramamoorthy <s-ramamoorthy@ti.com>
Link: https://lore.kernel.org/r/20250722181609.1541739-3-s-ramamoorthy@ti.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
2 weeks agogpio: tps65219: Update _IDX & _OFFSET macro prefix
Shree Ramamoorthy [Tue, 22 Jul 2025 18:16:08 +0000 (13:16 -0500)] 
gpio: tps65219: Update _IDX & _OFFSET macro prefix

TPS65215 and TPS65219 are overlapping PMIC devices. While their regulator
features differe, the GPIO features are the same. In the TPS65219 MFD
driver, the 2 PMICs share the same "tps65219-gpio" compatible string to
limit support for TPS65215 in this GPIO driver to comments.

The TPS6521X_GPIO0_IDX and TPS6521X_GPIO0_OFFSET macro name prefixes are
updated to indicate these macros apply to both PMICs.

Reviewed-by: Roger Quadros <rogerq@kernel.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Jonathan Cormier <jcormier@criticallink.com>
Signed-off-by: Shree Ramamoorthy <s-ramamoorthy@ti.com>
Link: https://lore.kernel.org/r/20250722181609.1541739-2-s-ramamoorthy@ti.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
2 weeks agogpio: sysfs: Fix an end of loop test in gpiod_unexport()
Dan Carpenter [Fri, 18 Jul 2025 21:22:15 +0000 (16:22 -0500)] 
gpio: sysfs: Fix an end of loop test in gpiod_unexport()

The test for "if (!desc_data)" does not work correctly because the list
iterator in a list_for_each_entry() loop is always non-NULL. If we don't
exit via a break, then it points to invalid memory.  Instead, use a tmp
variable for the list iterator and only set the "desc_data" when we have
found a match.

Fixes: 1cd53df733c2 ("gpio: sysfs: don't look up exported lines as class devices")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Link: https://lore.kernel.org/r/747545bf-05f0-4f89-ba77-cb96bf9041f1@sabinyo.mountain
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agodt-bindings: gpio: Convert qca,ar7100-gpio to DT schema
Rob Herring (Arm) [Mon, 14 Jul 2025 20:28:58 +0000 (15:28 -0500)] 
dt-bindings: gpio: Convert qca,ar7100-gpio to DT schema

Convert the Qualcomm Atheros AR7xxx/AR9xxx GPIO binding to DT schema
format.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250714202859.3012173-1-robh@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agodt-bindings: gpio: Convert maxim,max3191x to DT schema
Rob Herring (Arm) [Mon, 14 Jul 2025 20:28:41 +0000 (15:28 -0500)] 
dt-bindings: gpio: Convert maxim,max3191x to DT schema

Convert the Maxim MAX3191x and similar GPIO binding to DT schema format.
It's a straight forward conversion.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Reviewed-by: Lukas Wunner <lukas@wunner.de>
Link: https://lore.kernel.org/r/20250714202843.3011698-1-robh@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agodt-bindings: gpio: fsl,qoriq-gpio: Add missing mpc8xxx compatibles
Rob Herring (Arm) [Mon, 14 Jul 2025 20:29:40 +0000 (15:29 -0500)] 
dt-bindings: gpio: fsl,qoriq-gpio: Add missing mpc8xxx compatibles

The fsl,mpc8349-gpio, fsl,mpc8572-gpio, and fsl,mpc8610-gpio compatibles
are already documented in fsl,qoriq-gpio.yaml. Add the additional
compatibles that use fsl,mpc8349-gpio as a fallback. With that,
the 8xxx_gpio.txt binding document is redundant and can be removed.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Acked-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Link: https://lore.kernel.org/r/20250714202941.3013390-1-robh@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agodt-bindings: gpio: Create a trivial GPIO schema
Rob Herring (Arm) [Mon, 14 Jul 2025 20:19:51 +0000 (15:19 -0500)] 
dt-bindings: gpio: Create a trivial GPIO schema

Many simple GPIO controllers without interrupt capability have the same
schema other than their compatible value. Combine all these bindings
into a single schema. The criteria to be included here is must use 2
cells, have no interrupt capability, have 0 or 1 "reg" entries, and
have no other resources (like clocks).

Note that "ngpios" is now allowed in some cases it wasn't before and
constraints on it have been dropped.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20250714201959.2983482-1-robh@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agodt-bindings: gpio: Convert st,spear-spics-gpio to DT schema
Rob Herring (Arm) [Mon, 14 Jul 2025 20:27:52 +0000 (15:27 -0500)] 
dt-bindings: gpio: Convert st,spear-spics-gpio to DT schema

Convert the ST SPEAr SPI CS GPIO binding to DT schema format. It's a
straight forward conversion.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Link: https://lore.kernel.org/r/20250714202753.3010240-1-robh@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agodt-bindings: gpio: Convert abilis,tb10x-gpio to DT schema
Rob Herring (Arm) [Mon, 14 Jul 2025 20:29:32 +0000 (15:29 -0500)] 
dt-bindings: gpio: Convert abilis,tb10x-gpio to DT schema

Convert the Abilis TB10x GPIO binding to DT schema format. It's a
straight forward conversion.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250714202934.3013189-1-robh@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agodt-bindings: gpio: Convert apm,xgene-gpio-sb to DT schema
Rob Herring (Arm) [Mon, 14 Jul 2025 20:28:20 +0000 (15:28 -0500)] 
dt-bindings: gpio: Convert apm,xgene-gpio-sb to DT schema

Convert APM X-Gene Standby GPIO binding to DT schema format. It's a
straight forward conversion.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250714202821.3011099-1-robh@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agodt-bindings: gpio: Convert ti,twl4030-gpio to DT schema
Rob Herring (Arm) [Mon, 14 Jul 2025 20:28:28 +0000 (15:28 -0500)] 
dt-bindings: gpio: Convert ti,twl4030-gpio to DT schema

Convert the TI TWL4030 PMIC GPIO binding to DT schema format. The number
of #interrupt-cells was wrong compared to what is in use. Correct it to
be 1.

Reviewed-by: Andreas Kemnade <andreas@kemnade.info>
Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250714202829.3011298-1-robh@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agodt-bindings: gpio: Convert lantiq,gpio-mm-lantiq to DT schema
Rob Herring (Arm) [Mon, 14 Jul 2025 20:28:35 +0000 (15:28 -0500)] 
dt-bindings: gpio: Convert lantiq,gpio-mm-lantiq to DT schema

Convert the Lantiq SoC External Bus memory mapped GPIO binding to DT
schema format. It's a straight forward conversion.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250714202837.3011521-1-robh@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agodt-bindings: gpio: Convert ti,keystone-dsp-gpio to DT schema
Rob Herring (Arm) [Mon, 14 Jul 2025 20:28:49 +0000 (15:28 -0500)] 
dt-bindings: gpio: Convert ti,keystone-dsp-gpio to DT schema

Convert the TI Keystone DSP GPIO binding to DT schema format. The
"ti,syscon-dev" property was wrong and should be "gpio,syscon-dev"
instead.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250714202850.3011952-1-robh@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agodt-bindings: gpio: Convert altr,pio-1.0 to DT schema
Rob Herring (Arm) [Mon, 14 Jul 2025 20:29:04 +0000 (15:29 -0500)] 
dt-bindings: gpio: Convert altr,pio-1.0 to DT schema

Convert the altr,pio-1.0 binding to DT schema format. It's a
straight forward conversion.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250714202905.3012386-1-robh@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agodt-bindings: gpio: Convert cirrus,clps711x-mctrl-gpio to DT schema
Rob Herring (Arm) [Mon, 14 Jul 2025 20:29:17 +0000 (15:29 -0500)] 
dt-bindings: gpio: Convert cirrus,clps711x-mctrl-gpio to DT schema

Convert the cirrus,clps711x-mctrl-gpio binding to DT schema format.
Add the missing "gpio,syscon-dev" phandle property.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250714202919.3012764-1-robh@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agodt-bindings: gpio: Convert cavium,octeon-3860-gpio to DT schema
Rob Herring (Arm) [Mon, 14 Jul 2025 20:29:25 +0000 (15:29 -0500)] 
dt-bindings: gpio: Convert cavium,octeon-3860-gpio to DT schema

Convert the Cavium Octeon 3860 GPIO binding to DT schema format. It's a
straight forward conversion.

Looks like Octeon has no maintainers, so Bartosz is listed.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250714202927.3012974-1-robh@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agodt-bindings: gpio: Convert exar,xra1403 to DT schema
Rob Herring (Arm) [Mon, 14 Jul 2025 20:28:12 +0000 (15:28 -0500)] 
dt-bindings: gpio: Convert exar,xra1403 to DT schema

Convert XRA1403 16-bit GPIO Expander binding to DT schema format. It's a
straight forward conversion.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250714202813.3010879-1-robh@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agodt-bindings: gpio: Convert microchip,pic32mzda-gpio to DT schema
Rob Herring (Arm) [Mon, 14 Jul 2025 20:28:06 +0000 (15:28 -0500)] 
dt-bindings: gpio: Convert microchip,pic32mzda-gpio to DT schema

Convert the Microchip PIC32 GPIO binding to DT schema format. It's a
straight forward conversion.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250714202807.3010652-1-robh@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agodt-bindings: gpio: Convert lacie,netxbig-gpio-ext to DT schema
Rob Herring (Arm) [Mon, 14 Jul 2025 20:28:00 +0000 (15:28 -0500)] 
dt-bindings: gpio: Convert lacie,netxbig-gpio-ext to DT schema

Convert the Lacie NetxBig GPIO binding to DT schema format. It's a
straight forward conversion.

Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://lore.kernel.org/r/20250714202801.3010442-1-robh@kernel.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: xilinx: convert set_multiple() to the new API as well
Bartosz Golaszewski [Thu, 17 Jul 2025 13:11:15 +0000 (15:11 +0200)] 
gpio: xilinx: convert set_multiple() to the new API as well

The patch converting the driver to using new GPIO line value setters
only converted the set() callback and missed set_multiple(). Fix it now.

Fixes: 1919ea19a4ff ("gpio: xilinx: use new GPIO line value setter callbacks")
Acked-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/20250717131116.53878-1-brgl@bgdev.pl
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agomisc: ti-fpc202: use new GPIO line value setter callbacks
Bartosz Golaszewski [Thu, 17 Jul 2025 13:03:56 +0000 (15:03 +0200)] 
misc: ti-fpc202: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Reviewed-by: Romain Gantois <romain.gantois@bootlin.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20250717130357.53491-2-brgl@bgdev.pl
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agomisc: ti-fpc202: remove unneeded direction check
Bartosz Golaszewski [Thu, 17 Jul 2025 13:03:55 +0000 (15:03 +0200)] 
misc: ti-fpc202: remove unneeded direction check

As of commit 92ac7de3175e3 ("gpiolib: don't allow setting values on input
lines"), the GPIO core makes sure values cannot be set on input lines.
Remove the unnecessary check.

Reviewed-by: Romain Gantois <romain.gantois@bootlin.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20250717130357.53491-1-brgl@bgdev.pl
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: loongson-64bit: Extend GPIO irq support
Binbin Zhou [Mon, 14 Jul 2025 06:45:42 +0000 (14:45 +0800)] 
gpio: loongson-64bit: Extend GPIO irq support

Add the interrupt enable register offset (inten_offset) so that GPIO
interrupts can be enabled normally on more models.

According to the latest interface specifications, the definition of GPIO
interrupts in ACPI is similar to that in FDT. The GPIO interrupts are
listed one by one according to the GPIO number, and the corresponding
interrupt number can be obtained directly through the GPIO number
specified by the consumer.

Signed-off-by: Xi Ruoyao <xry111@xry111.site>
Signed-off-by: Binbin Zhou <zhoubinbin@loongson.cn>
Reviewed-by: Huacai Chen <chenhuacai@loongson.cn>
Link: https://lore.kernel.org/r/20250714064542.2276247-1-zhoubinbin@loongson.cn
[Bartosz: tweaked the commit message]
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: viperboard: Unlock on error in vprbrd_gpiob_direction_output()
Dan Carpenter [Tue, 15 Jul 2025 22:58:34 +0000 (17:58 -0500)] 
gpio: viperboard: Unlock on error in vprbrd_gpiob_direction_output()

Unlock before returning if vprbrd_gpiob_setdir() fails.

Fixes: 55e2d1eec110 ("gpio: viperboard: use new GPIO line value setter callbacks")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Link: https://lore.kernel.org/r/9e72018c-e46e-4e55-83e4-503da4d022fc@sabinyo.mountain
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: TODO: remove the task for the sysfs rework
Bartosz Golaszewski [Fri, 4 Jul 2025 12:58:57 +0000 (14:58 +0200)] 
gpio: TODO: remove the task for the sysfs rework

Remove the completed task tracking the rework of the sysfs interface and
add a new task to track the removal of the legacy bits and pieces.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20250704-gpio-sysfs-chip-export-v4-10-9289d8758243@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: sysfs: allow disabling the legacy parts of the GPIO sysfs interface
Bartosz Golaszewski [Fri, 4 Jul 2025 12:58:56 +0000 (14:58 +0200)] 
gpio: sysfs: allow disabling the legacy parts of the GPIO sysfs interface

Add a Kconfig switch allowing to disable the legacy parts of the GPIO
sysfs interface. This means that even though we keep the
/sys/class/gpio/ directory, it no longer contains the global
export/unexport attribute pair (instead, the user should use the
per-chip export/unpexport) nor the gpiochip$BASE entries. This option
default to y if GPIO sysfs is enabled but we'll default it to n at some
point in the future.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20250704-gpio-sysfs-chip-export-v4-9-9289d8758243@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: sysfs: export the GPIO directory locally in the gpiochip<id> directory
Bartosz Golaszewski [Fri, 4 Jul 2025 12:58:55 +0000 (14:58 +0200)] 
gpio: sysfs: export the GPIO directory locally in the gpiochip<id> directory

As a way to allow the user-space to stop referring to GPIOs by their
global numbers, introduce a parallel group of line attributes for
exported GPIO that live inside the GPIO chip class device and are
referred to by their HW offset within their parent chip.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20250704-gpio-sysfs-chip-export-v4-8-9289d8758243@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: sysfs: don't look up exported lines as class devices
Bartosz Golaszewski [Fri, 4 Jul 2025 12:58:54 +0000 (14:58 +0200)] 
gpio: sysfs: don't look up exported lines as class devices

In preparation for adding a parallel, per-chip attribute group for
exported GPIO lines, stop using class device APIs to refer to it in the
code. When unregistering the chip, don't call class_find_device() but
instead store exported lines in a linked list inside the GPIO chip data
object and look it up there.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20250704-gpio-sysfs-chip-export-v4-7-9289d8758243@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: sysfs: don't use driver data in sysfs callbacks for line attributes
Bartosz Golaszewski [Fri, 4 Jul 2025 12:58:53 +0000 (14:58 +0200)] 
gpio: sysfs: don't use driver data in sysfs callbacks for line attributes

Currently each exported GPIO is represented in sysfs as a separate class
device. This allows us to simply use dev_get_drvdata() to retrieve the
pointer passed to device_create_with_groups() from sysfs ops callbacks.

However, we're preparing to add a parallel set of per-line sysfs
attributes that will live inside the associated gpiochip group. They are
not registered as class devices and so have the parent device passed as
argument to their callbacks (the GPIO chip class device).

Put the attribute structs inside the GPIO descriptor data and
dereference the relevant ones using container_of() in the callbacks.
This way, we'll be able to reuse the same code for both the legacy and
new GPIO attributes.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20250704-gpio-sysfs-chip-export-v4-6-9289d8758243@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: sysfs: rename the data variable in gpiod_(un)export()
Bartosz Golaszewski [Fri, 4 Jul 2025 12:58:52 +0000 (14:58 +0200)] 
gpio: sysfs: rename the data variable in gpiod_(un)export()

In preparation for future commits which will make use of descriptor AND
GPIO-device data in the same functions rename the former from data to
desc_data separately which will make future changes smaller and easier
to read.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20250704-gpio-sysfs-chip-export-v4-5-9289d8758243@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: sysfs: pass gpiod_data directly to internal GPIO sysfs functions
Bartosz Golaszewski [Fri, 4 Jul 2025 12:58:51 +0000 (14:58 +0200)] 
gpio: sysfs: pass gpiod_data directly to internal GPIO sysfs functions

We don't use any fields from struct device in gpio_sysfs_request_irq(),
gpio_sysfs_free_irq() and gpio_sysfs_set_active_low(). We only use the
dev argument to get the associated struct gpiod_data pointer with
dev_get_drvdata().

To make the transition to not using dev_get_drvdata() across line
callbacks for sysfs attributes easier, pass gpiod_data directly to
these functions instead of having it wrapped in struct device.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20250704-gpio-sysfs-chip-export-v4-4-9289d8758243@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: sysfs: only get the dirent reference for the value attr once
Bartosz Golaszewski [Fri, 4 Jul 2025 12:58:50 +0000 (14:58 +0200)] 
gpio: sysfs: only get the dirent reference for the value attr once

There's no reason to retrieve the reference to the sysfs dirent every
time we request an interrupt, we can as well only do it once when
exporting the GPIO.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20250704-gpio-sysfs-chip-export-v4-3-9289d8758243@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: sysfs: add a parallel class device for each GPIO chip using device IDs
Bartosz Golaszewski [Fri, 4 Jul 2025 12:58:49 +0000 (14:58 +0200)] 
gpio: sysfs: add a parallel class device for each GPIO chip using device IDs

In order to enable moving away from the global GPIO numberspace-based
exporting of lines over sysfs: add a parallel, per-chip entry under
/sys/class/gpio/ for every registered GPIO chip, denoted by device ID
in the file name and not its base GPIO number.

Compared to the existing chip group: it does not contain the "base"
attribute as the goal of this change is to not refer to GPIOs by their
global number from user-space anymore. It also contains its own,
per-chip export/unexport attribute pair which allow to export lines by
their hardware offset within the chip.

Caveat #1: the new device cannot be a link to (or be linked to by) the
existing "gpiochip<BASE>" entry as we cannot create links in
/sys/class/xyz/.

Caveat #2: the new entry cannot be named "gpiochipX" as it could
conflict with devices whose base is statically defined to a low number.
Let's go with "chipX" instead.

While at it: the chip label is unique so update the untrue statement
when extending the docs.

Acked-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20250704-gpio-sysfs-chip-export-v4-2-9289d8758243@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: sysfs: use gpiod_is_equal() to compare GPIO descriptors
Bartosz Golaszewski [Fri, 4 Jul 2025 12:58:48 +0000 (14:58 +0200)] 
gpio: sysfs: use gpiod_is_equal() to compare GPIO descriptors

We have a dedicated comparator for GPIO descriptors that performs
additional checks and hides the implementation detail of whether the
same GPIO can be associated with two separate struct gpio_desc objects.
Use it in sysfs code

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20250704-gpio-sysfs-chip-export-v4-1-9289d8758243@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: wcove: use new GPIO line value setter callbacks
Bartosz Golaszewski [Tue, 15 Jul 2025 08:19:45 +0000 (10:19 +0200)] 
gpio: wcove: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Reviewed-by: Andy Shevchenko <andy@kernel.org>
Link: https://lore.kernel.org/r/20250715-gpiochip-set-rv-gpio-remaining-v2-2-072b4cf06330@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: wcove: use regmap_assign_bits() in .set()
Bartosz Golaszewski [Tue, 15 Jul 2025 08:19:44 +0000 (10:19 +0200)] 
gpio: wcove: use regmap_assign_bits() in .set()

Replace the if-else with a direct call to the regmap_assign_bits()
helper and save a couple lines of code.

Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20250715-gpiochip-set-rv-gpio-remaining-v2-1-072b4cf06330@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: pca953x: use regmap_update_bits() to improve performance
Hugo Villeneuve [Mon, 14 Jul 2025 13:37:30 +0000 (09:37 -0400)] 
gpio: pca953x: use regmap_update_bits() to improve performance

Using regmap_update_bits() allows to reduce the number of I2C transfers
when updating bits that haven't changed on non-volatile registers.

For example on a PCAL6416, when changing a GPIO direction from input to
output, the number of I2C transfers can be reduced from 4 to just 1 if
the pull resistors configuration hasn't changed and the output value
is the same as before.

Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
Link: https://lore.kernel.org/r/20250714133730.6353-1-hugo@hugovil.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: zynqmp-modepin: set line value in .direction_output()
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:56 +0000 (08:41 +0200)] 
gpio: zynqmp-modepin: set line value in .direction_output()

It's ok to not do anything specific when setting direction but the
callback should still respect the line value the user requests.

Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-19-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: zynqmp-modepin: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:55 +0000 (08:41 +0200)] 
gpio: zynqmp-modepin: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-18-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: zynq: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:54 +0000 (08:41 +0200)] 
gpio: zynq: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-17-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: zevio: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:53 +0000 (08:41 +0200)] 
gpio: zevio: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-16-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: xtensa: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:52 +0000 (08:41 +0200)] 
gpio: xtensa: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-15-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: xtensa: remove unneeded .set() callback
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:51 +0000 (08:41 +0200)] 
gpio: xtensa: remove unneeded .set() callback

GPIO core deals just fine with input-only controllers not implementing
the .set() callback. Remove the unneeded dummy implementation.

Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-14-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: xra1403: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:50 +0000 (08:41 +0200)] 
gpio: xra1403: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-13-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: xlp: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:49 +0000 (08:41 +0200)] 
gpio: xlp: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-12-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: xlp: drop unneeded ngpio checks
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:48 +0000 (08:41 +0200)] 
gpio: xlp: drop unneeded ngpio checks

GPIO core already makes sure that offsets higher than the number of GPIOs
are never passed to controller callbacks. We can remove the unnecessary
check.

Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-11-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: xilinx: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:47 +0000 (08:41 +0200)] 
gpio: xilinx: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-10-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: xgene: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:46 +0000 (08:41 +0200)] 
gpio: xgene: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-9-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: wm8994: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:45 +0000 (08:41 +0200)] 
gpio: wm8994: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-8-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: wm8350: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:44 +0000 (08:41 +0200)] 
gpio: wm8350: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-7-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: wm831x: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:43 +0000 (08:41 +0200)] 
gpio: wm831x: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-6-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: winbond: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:42 +0000 (08:41 +0200)] 
gpio: winbond: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-5-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: wcd934x: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:40 +0000 (08:41 +0200)] 
gpio: wcd934x: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-3-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: wcd934x: check the return value of regmap_update_bits()
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:39 +0000 (08:41 +0200)] 
gpio: wcd934x: check the return value of regmap_update_bits()

regmap_update_bits() can fail so check its return value in
wcd_gpio_direction_output() for consistency with the rest of the code
and propagate any errors.

Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-2-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: vx855: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 9 Jul 2025 06:41:38 +0000 (08:41 +0200)] 
gpio: vx855: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-1-b8950f69618d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: virtio: use new GPIO line value setter callbacks
Bartosz Golaszewski [Mon, 7 Jul 2025 07:50:25 +0000 (09:50 +0200)] 
gpio: virtio: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Link: https://lore.kernel.org/r/20250707-gpiochip-set-rv-gpio-round4-v1-12-35668aaaf6d2@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: viperboard: use new GPIO line value setter callbacks
Bartosz Golaszewski [Mon, 7 Jul 2025 07:50:24 +0000 (09:50 +0200)] 
gpio: viperboard: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250707-gpiochip-set-rv-gpio-round4-v1-11-35668aaaf6d2@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: uniphier: use new GPIO line value setter callbacks
Bartosz Golaszewski [Mon, 7 Jul 2025 07:50:23 +0000 (09:50 +0200)] 
gpio: uniphier: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Acked-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
Link: https://lore.kernel.org/r/20250707-gpiochip-set-rv-gpio-round4-v1-10-35668aaaf6d2@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: twl6040: set line value in .direction_out()
Bartosz Golaszewski [Mon, 7 Jul 2025 07:50:22 +0000 (09:50 +0200)] 
gpio: twl6040: set line value in .direction_out()

It's ok for a GPIO controller to be output-only but the .direction_out()
callback must also set the requested line value.

Link: https://lore.kernel.org/r/20250707-gpiochip-set-rv-gpio-round4-v1-9-35668aaaf6d2@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: twl6040: use new GPIO line value setter callbacks
Bartosz Golaszewski [Mon, 7 Jul 2025 07:50:21 +0000 (09:50 +0200)] 
gpio: twl6040: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250707-gpiochip-set-rv-gpio-round4-v1-8-35668aaaf6d2@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: twl4030: use new GPIO line value setter callbacks
Bartosz Golaszewski [Mon, 7 Jul 2025 07:50:20 +0000 (09:50 +0200)] 
gpio: twl4030: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250707-gpiochip-set-rv-gpio-round4-v1-7-35668aaaf6d2@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: ts4900: use new GPIO line value setter callbacks
Bartosz Golaszewski [Mon, 7 Jul 2025 07:50:19 +0000 (09:50 +0200)] 
gpio: ts4900: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250707-gpiochip-set-rv-gpio-round4-v1-6-35668aaaf6d2@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: tqmx86: use new GPIO line value setter callbacks
Bartosz Golaszewski [Mon, 7 Jul 2025 07:50:18 +0000 (09:50 +0200)] 
gpio: tqmx86: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Acked-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
Link: https://lore.kernel.org/r/20250707-gpiochip-set-rv-gpio-round4-v1-5-35668aaaf6d2@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: tps68470: use new GPIO line value setter callbacks
Bartosz Golaszewski [Mon, 7 Jul 2025 07:50:17 +0000 (09:50 +0200)] 
gpio: tps68470: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250707-gpiochip-set-rv-gpio-round4-v1-4-35668aaaf6d2@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: tps65912: use new GPIO line value setter callbacks
Bartosz Golaszewski [Mon, 7 Jul 2025 07:50:16 +0000 (09:50 +0200)] 
gpio: tps65912: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250707-gpiochip-set-rv-gpio-round4-v1-3-35668aaaf6d2@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: tps65912: check the return value of regmap_update_bits()
Bartosz Golaszewski [Mon, 7 Jul 2025 07:50:15 +0000 (09:50 +0200)] 
gpio: tps65912: check the return value of regmap_update_bits()

regmap_update_bits() can fail, check its return value like we do
elsewhere in the driver.

Link: https://lore.kernel.org/r/20250707-gpiochip-set-rv-gpio-round4-v1-2-35668aaaf6d2@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpio: tps65910: use new GPIO line value setter callbacks
Bartosz Golaszewski [Mon, 7 Jul 2025 07:50:14 +0000 (09:50 +0200)] 
gpio: tps65910: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250707-gpiochip-set-rv-gpio-round4-v1-1-35668aaaf6d2@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
3 weeks agogpiolib: don't use GPIO global numbers in debugfs output
Bartosz Golaszewski [Mon, 7 Jul 2025 14:13:13 +0000 (16:13 +0200)] 
gpiolib: don't use GPIO global numbers in debugfs output

One of the users of global GPIO numbers in the kernel are the debugfs
callbacks in GPIO drivers. Before converting any custom .dbg_show()
callbacks in individual modules, let's first make GPIO core stop using
GPIO base in debugfs output. Use hardware offsets instead.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20250707141313.73169-1-brgl@bgdev.pl
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agogpio: rcar: Convert to DEFINE_SIMPLE_DEV_PM_OPS()
Geert Uytterhoeven [Wed, 9 Jul 2025 18:43:59 +0000 (20:43 +0200)] 
gpio: rcar: Convert to DEFINE_SIMPLE_DEV_PM_OPS()

Convert the Renesas R-Car GPIO driver from SIMPLE_DEV_PM_OPS() to
DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr().  This lets us drop the
check for CONFIG_PM_SLEEP, and reduces kernel size in case CONFIG_PM or
CONFIG_PM_SLEEP is disabled, while increasing build coverage.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Link: https://lore.kernel.org/r/e201140426daacaa799d73e2f76bfd96b6f5718f.1752086619.git.geert+renesas@glider.be
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agogpio: sim: allow to mark simulated lines as invalid
Bartosz Golaszewski [Mon, 30 Jun 2025 13:03:57 +0000 (15:03 +0200)] 
gpio: sim: allow to mark simulated lines as invalid

Add a new line-level, boolean property to the gpio-sim configfs
interface called 'valid'. It's set by default and the user can unset it
to make the line be included in the standard `gpio-reserved-ranges`
property when the chip is registered with GPIO core. This allows users
to specify which lines should not be available for requesting as GPIOs.

Link: https://lore.kernel.org/r/20250630130358.40352-1-brgl@bgdev.pl
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agogpio: pca953x: Add support for TI TCA6418
Maria Garcia [Thu, 3 Jul 2025 20:57:40 +0000 (22:57 +0200)] 
gpio: pca953x: Add support for TI TCA6418

The TI TCA6418 is a 18-channel I2C I/O expander. It is slightly
different to other models from the same family, such as TCA6416,
but has enough in common with them to make it work with just a
few tweaks, which are explained in the code's documentation.

Signed-off-by: Maria Garcia <mariagarcia7293@gmail.com>
Link: https://lore.kernel.org/r/20250703205740.45385-3-mariagarcia7293@gmail.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agodt-bindings: gpio: pca95xx: add TI TCA6418
Maria Garcia [Thu, 3 Jul 2025 20:57:39 +0000 (22:57 +0200)] 
dt-bindings: gpio: pca95xx: add TI TCA6418

The TCA6418E is a 18-channel I2C I/O expander with integrated ESD
protection.

Signed-off-by: Maria Garcia <mariagarcia7293@gmail.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Link: https://lore.kernel.org/r/20250703205740.45385-2-mariagarcia7293@gmail.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agogpio: arizona: Remove redundant pm_runtime_mark_last_busy() calls
Sakari Ailus [Fri, 4 Jul 2025 07:54:08 +0000 (10:54 +0300)] 
gpio: arizona: Remove redundant pm_runtime_mark_last_busy() calls

pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
pm_runtime_mark_last_busy().

Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Link: https://lore.kernel.org/r/20250704075408.3217690-1-sakari.ailus@linux.intel.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agoMerge tag 'pm-runtime-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
Bartosz Golaszewski [Mon, 7 Jul 2025 08:00:33 +0000 (10:00 +0200)] 
Merge tag 'pm-runtime-6.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm into gpio/for-next

Runtime PM updates related to autosuspend for 6.17

Make several autosuspend functions mark last busy stamp and update
the documentation accordingly (Sakari Ailus).

4 weeks agogpio: tps6586x: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 2 Jul 2025 09:14:13 +0000 (11:14 +0200)] 
gpio: tps6586x: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250702-gpiochip-set-rv-gpio-round3-v1-12-0d23be74f71d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agogpio: tps65219: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 2 Jul 2025 09:14:12 +0000 (11:14 +0200)] 
gpio: tps65219: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250702-gpiochip-set-rv-gpio-round3-v1-11-0d23be74f71d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agogpio: tps65218: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 2 Jul 2025 09:14:11 +0000 (11:14 +0200)] 
gpio: tps65218: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250702-gpiochip-set-rv-gpio-round3-v1-10-0d23be74f71d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agogpio: tps65218: remove unneeded callbacks
Bartosz Golaszewski [Wed, 2 Jul 2025 09:14:10 +0000 (11:14 +0200)] 
gpio: tps65218: remove unneeded callbacks

GPIO core can handle output-only chips that don't implement the get()
and direction_input() callbacks. There's no need to provide dummy
implementation of the latter in the driver so drop it.

Link: https://lore.kernel.org/r/20250702-gpiochip-set-rv-gpio-round3-v1-9-0d23be74f71d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agogpio: tps65086: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 2 Jul 2025 09:14:09 +0000 (11:14 +0200)] 
gpio: tps65086: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250702-gpiochip-set-rv-gpio-round3-v1-8-0d23be74f71d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agogpio: tpic2810: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 2 Jul 2025 09:14:08 +0000 (11:14 +0200)] 
gpio: tpic2810: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250702-gpiochip-set-rv-gpio-round3-v1-7-0d23be74f71d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agogpio: tpic2810: remove unneeded callbacks
Bartosz Golaszewski [Wed, 2 Jul 2025 09:14:07 +0000 (11:14 +0200)] 
gpio: tpic2810: remove unneeded callbacks

GPIO core can handle output-only chips that don't implement the get()
and direction_input() callbacks. There's no need to provide dummy
implementation of the latter in the driver so drop it.

Link: https://lore.kernel.org/r/20250702-gpiochip-set-rv-gpio-round3-v1-6-0d23be74f71d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agogpio: timberdale: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 2 Jul 2025 09:14:06 +0000 (11:14 +0200)] 
gpio: timberdale: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250702-gpiochip-set-rv-gpio-round3-v1-5-0d23be74f71d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agogpio: thunderx: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 2 Jul 2025 09:14:05 +0000 (11:14 +0200)] 
gpio: thunderx: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250702-gpiochip-set-rv-gpio-round3-v1-4-0d23be74f71d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agogpio: tegra: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 2 Jul 2025 09:14:04 +0000 (11:14 +0200)] 
gpio: tegra: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250702-gpiochip-set-rv-gpio-round3-v1-3-0d23be74f71d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agogpio: tegra186: use new GPIO line value setter callbacks
Bartosz Golaszewski [Wed, 2 Jul 2025 09:14:03 +0000 (11:14 +0200)] 
gpio: tegra186: use new GPIO line value setter callbacks

struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.

Link: https://lore.kernel.org/r/20250702-gpiochip-set-rv-gpio-round3-v1-2-0d23be74f71d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agogpio: tegra186: don't call the set() callback directly
Bartosz Golaszewski [Wed, 2 Jul 2025 09:14:02 +0000 (11:14 +0200)] 
gpio: tegra186: don't call the set() callback directly

Drivers should not dereference GPIO chip callbacks directly. Move the
module's set() function higher to make it available to the
direction_output() callback and call it instead.

Link: https://lore.kernel.org/r/20250702-gpiochip-set-rv-gpio-round3-v1-1-0d23be74f71d@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
4 weeks agogpio: en7523: use new generic GPIO chip API
Bartosz Golaszewski [Wed, 2 Jul 2025 09:22:15 +0000 (11:22 +0200)] 
gpio: en7523: use new generic GPIO chip API

Convert the driver to using the new generic GPIO chip interfaces from
linux/gpio/generic.h.

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20250702-gpio-mmio-rework-v2-8-6b77aab684d8@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>