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; }