summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Kubik <piotr@kubik.pl>2026-04-08 14:51:06 +0300
committerLee Jones <lee@kernel.org>2026-06-17 13:28:09 +0300
commit26e15f2558f66b6747ef981df8054d0d92d01b60 (patch)
treead4bdeb08541f603e23cf37008f97607a3840462
parent7c150c17c01d4d64942b9872d66dd7670e8ba80e (diff)
downloadlinux-26e15f2558f66b6747ef981df8054d0d92d01b60.tar.xz
leds: trigger: gpio: Use GPIOD_FLAGS_BIT_NONEXCLUSIVE
When a GPIO is shared between the LED trigger driver and another driver, the LED trigger driver needs to request the GPIO with GPIOD_FLAGS_BIT_NONEXCLUSIVE to allow both drivers to monitor the same GPIO pin. Without this flag, if another driver has already claimed the GPIO, the LED trigger driver's gpiod_get_optional() call fails silently, and the LED trigger doesn't work. This is needed for scenarios like: - SFP module presence/status LED triggered by SFP Mod_ABS/Rx_LOS Both GPIOs are also monitored by the SFP driver for module state management, so they need to be shared. Signed-off-by: Piotr Kubik <piotr@kubik.pl> Link: https://patch.msgid.link/20260408115106.379834-1-piotr@kubik.pl Signed-off-by: Lee Jones <lee@kernel.org>
-rw-r--r--drivers/leds/trigger/ledtrig-gpio.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/leds/trigger/ledtrig-gpio.c b/drivers/leds/trigger/ledtrig-gpio.c
index fc911dfec0ef..3b3e6869e856 100644
--- a/drivers/leds/trigger/ledtrig-gpio.c
+++ b/drivers/leds/trigger/ledtrig-gpio.c
@@ -86,7 +86,8 @@ static int gpio_trig_activate(struct led_classdev *led)
* The generic property "trigger-sources" is followed,
* and we hope that this is a GPIO.
*/
- gpio_data->gpiod = gpiod_get_optional(dev, "trigger-sources", GPIOD_IN);
+ gpio_data->gpiod = gpiod_get_optional(dev, "trigger-sources",
+ GPIOD_IN | GPIOD_FLAGS_BIT_NONEXCLUSIVE);
if (IS_ERR(gpio_data->gpiod)) {
ret = PTR_ERR(gpio_data->gpiod);
kfree(gpio_data);