summaryrefslogtreecommitdiff
path: root/drivers/led/led-uclass.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/led/led-uclass.c')
-rw-r--r--drivers/led/led-uclass.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/led/led-uclass.c b/drivers/led/led-uclass.c
index 4932b901142..e6312d1dc41 100644
--- a/drivers/led/led-uclass.c
+++ b/drivers/led/led-uclass.c
@@ -58,6 +58,10 @@ int led_set_state(struct udevice *dev, enum led_state_t state)
if (!ops->set_state)
return -ENOSYS;
+ if (IS_ENABLED(CONFIG_LED_SW_BLINK) &&
+ led_sw_on_state_change(dev, state))
+ return 0;
+
return ops->set_state(dev, state);
}
@@ -68,6 +72,10 @@ enum led_state_t led_get_state(struct udevice *dev)
if (!ops->get_state)
return -ENOSYS;
+ if (IS_ENABLED(CONFIG_LED_SW_BLINK) &&
+ led_sw_is_blinking(dev))
+ return LEDST_BLINK;
+
return ops->get_state(dev);
}
@@ -80,6 +88,9 @@ int led_set_period(struct udevice *dev, int period_ms)
return ops->set_period(dev, period_ms);
#endif
+ if (IS_ENABLED(CONFIG_LED_SW_BLINK))
+ return led_sw_set_period(dev, period_ms);
+
return -ENOSYS;
}