]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
led: enable LEDST_BLINK state unconditionally
authorMikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Fri, 19 Jul 2024 09:12:11 +0000 (13:12 +0400)
committerTom Rini <trini@konsulko.com>
Tue, 30 Jul 2024 18:35:23 +0000 (12:35 -0600)
Changes:
 * enable LEDST_BLINK state unconditionally
 * function led_set_period() becomes available when CONFIG_LED_BLINK
   is disabled. This makes led code simpler.
 * fix cmd/led.c to work properly when LEDST_BLINK present, but
   CONFIG_LED_BLINK is disabled

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Reviewed-by: Simon Glass <sjg@chromium.org>
cmd/led.c
drivers/led/led-uclass.c
include/led.h

index 4256b3429c2f9520f8cc54f51627b6e0bfa7a5d7..2f786f34c67065c604916a252925227ea8f57f3a 100644 (file)
--- a/cmd/led.c
+++ b/cmd/led.c
@@ -15,9 +15,7 @@ static const char *const state_label[] = {
        [LEDST_OFF]     = "off",
        [LEDST_ON]      = "on",
        [LEDST_TOGGLE]  = "toggle",
-#ifdef CONFIG_LED_BLINK
        [LEDST_BLINK]   = "blink",
-#endif
 };
 
 enum led_state_t get_led_cmd(char *var)
@@ -75,9 +73,7 @@ int do_led(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
        enum led_state_t cmd;
        const char *led_label;
        struct udevice *dev;
-#ifdef CONFIG_LED_BLINK
        int freq_ms = 0;
-#endif
        int ret;
 
        /* Validate arguments */
@@ -88,13 +84,11 @@ int do_led(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
                return list_leds();
 
        cmd = argc > 2 ? get_led_cmd(argv[2]) : LEDST_COUNT;
-#ifdef CONFIG_LED_BLINK
        if (cmd == LEDST_BLINK) {
                if (argc < 4)
                        return CMD_RET_USAGE;
                freq_ms = dectoul(argv[3], NULL);
        }
-#endif
        ret = led_get_by_label(led_label, &dev);
        if (ret) {
                printf("LED '%s' not found (err=%d)\n", led_label, ret);
@@ -106,13 +100,11 @@ int do_led(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
        case LEDST_TOGGLE:
                ret = led_set_state(dev, cmd);
                break;
-#ifdef CONFIG_LED_BLINK
        case LEDST_BLINK:
                ret = led_set_period(dev, freq_ms);
                if (!ret)
                        ret = led_set_state(dev, LEDST_BLINK);
                break;
-#endif
        case LEDST_COUNT:
                printf("LED '%s': ", led_label);
                ret = show_led_state(dev);
index f37bf6a1550c5ef52877aa302fdab4c3fa30ed8a..4932b901142b9ae97c71e7630f3d7af4e16d777f 100644 (file)
@@ -71,17 +71,17 @@ enum led_state_t led_get_state(struct udevice *dev)
        return ops->get_state(dev);
 }
 
-#ifdef CONFIG_LED_BLINK
 int led_set_period(struct udevice *dev, int period_ms)
 {
+#ifdef CONFIG_LED_BLINK
        struct led_ops *ops = led_get_ops(dev);
 
-       if (!ops->set_period)
-               return -ENOSYS;
+       if (ops->set_period)
+               return ops->set_period(dev, period_ms);
+#endif
 
-       return ops->set_period(dev, period_ms);
+       return -ENOSYS;
 }
-#endif
 
 static int led_post_bind(struct udevice *dev)
 {
index a6353166289d294c416332ffc98faab9e7ee5343..9b24a4ce18812a4219d6ecee350e2ebd9ca736b2 100644 (file)
@@ -13,9 +13,7 @@ enum led_state_t {
        LEDST_OFF = 0,
        LEDST_ON = 1,
        LEDST_TOGGLE,
-#ifdef CONFIG_LED_BLINK
        LEDST_BLINK,
-#endif
 
        LEDST_COUNT,
 };