[PATCH v7 09/13] leds: trigger: Enforce strict checks in led_trigger_is_hw_controlled()
From: Rong Zhang
Date: Sun Sep 20 2026 - 15:58:18 EST
With all existing triggers adopting the new interface, strict checks
could be enforced to make the semantics of hardware control triggers
clearer.
In detail, a hardware control trigger should:
- Implement hw_offloaded() callback to indicate hardware control
- Associate with the LED classdev's hw_control_trigger string
The fallback path is kept, but a warning message is emitted when it
reaches there.
Acked-by: Ike Panhc <ikepanhc@xxxxxxxxx>
Signed-off-by: Rong Zhang <i@xxxxxxxx>
---
Changes in v7:
- Rename the offloaded() callback to hw_offloaded() (thanks Lee Jones)
Changes in v3:
- New patch in the series, splitted from PATCH 3 (thanks Thomas
Weißschuh)
---
drivers/leds/led-triggers.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led-triggers.c
index 38ce3350c870..6fee3145caab 100644
--- a/drivers/leds/led-triggers.c
+++ b/drivers/leds/led-triggers.c
@@ -42,9 +42,17 @@ static bool __led_trigger_is_hw_controlled(struct led_classdev *led_cdev)
if (!led_cdev->trigger)
return false;
+ if (!led_cdev->hw_control_trigger ||
+ strcmp(led_cdev->hw_control_trigger, led_cdev->trigger->name))
+ return false;
+
if (led_cdev->trigger->hw_offloaded)
return led_cdev->trigger->hw_offloaded(led_cdev);
+ dev_warn_once(led_cdev->dev,
+ "Hardware control trigger %s doesn't provide offloaded state\n",
+ led_cdev->trigger->name);
+
/* Otherwise assume private triggers are always offloaded. */
return led_cdev->trigger->trigger_type;
}
--
2.55.0