
Hi Mikhail,
On Fri, 12 Jul 2024 at 06:25, Mikhail Kshevetskiy mikhail.kshevetskiy@iopsys.eu wrote:
From: Michael Polyntsov michael.polyntsov@iopsys.eu
The standard property
linux,default-trigger = "pattern";
used to get an effect. No blinking parameters can be set yet.
Signed-off-by: Michael Polyntsov michael.polyntsov@iopsys.eu Signed-off-by: Mikhail Kshevetskiy mikhail.kshevetskiy@iopsys.eu
drivers/led/led-uclass.c | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-)
diff --git a/drivers/led/led-uclass.c b/drivers/led/led-uclass.c index 4f5dd66765e..90047ad35ba 100644 --- a/drivers/led/led-uclass.c +++ b/drivers/led/led-uclass.c @@ -100,6 +100,9 @@ static int led_post_bind(struct udevice *dev) { struct led_uc_plat *uc_plat = dev_get_uclass_plat(dev); const char *default_state; +#ifdef CONFIG_LED_BLINK
const char *trigger;
+#endif
if (!uc_plat->label) uc_plat->label = dev_read_string(dev, "label");
@@ -120,6 +123,12 @@ static int led_post_bind(struct udevice *dev) else return 0;
+#ifdef CONFIG_LED_BLINK
trigger = dev_read_string(dev, "linux,default-trigger");
if (trigger && !strncmp(trigger, "pattern", 7))
uc_plat->default_state = LEDST_BLINK;
+#endif
I still wonder whether you can use IS_ENABLED() instead of adding #ifdefs?
/* * In case the LED has default-state DT property, trigger * probe() to configure its default state during startup.
@@ -132,12 +141,28 @@ static int led_post_bind(struct udevice *dev) static int led_post_probe(struct udevice *dev) { struct led_uc_plat *uc_plat = dev_get_uclass_plat(dev);
int rc = 0;
if (uc_plat->default_state == LEDST_ON ||
uc_plat->default_state == LEDST_OFF)
led_set_state(dev, uc_plat->default_state);
switch (uc_plat->default_state) {
case LEDST_ON:
case LEDST_OFF:
rc = led_set_state(dev, uc_plat->default_state);
break;
+#ifdef CONFIG_LED_BLINK
case LEDST_BLINK: {
const int default_period_ms = 1000;
return 0;
rc = led_set_period(dev, default_period_ms);
if (rc == 0)
rc = led_set_state(dev, uc_plat->default_state);
break;
}
+#endif
default:
break;
}
return rc;
}
UCLASS_DRIVER(led) = {
2.39.2
Regards, Simon