From 7b9a609575615a3ba18a31a95282e756e34bd506 Mon Sep 17 00:00:00 2001 From: Rong Zhang Date: Mon, 21 Sep 2026 03:40:23 +0800 Subject: [PATCH] leds: trigger: Enforce strict checks in led_trigger_is_hw_controlled() 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 Signed-off-by: Rong Zhang Link: https://patch.msgid.link/20260921-leds-trigger-hw-changed-v7-9-fe3cdb6dec51@rong.moe Signed-off-by: Lee Jones --- 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; }