diff options
author | Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu> | 2024-07-19 13:12:11 +0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2024-07-30 12:35:23 -0600 |
commit | 2a15c676fa3413e7995e2a8b47e8932300e9e70b (patch) | |
tree | 68807c039afc26f83cf2e83a3fbfe7b01a6d4a6d | |
parent | cb0b7ab607aa71ae4b77a2b4d30d3d604c8324af (diff) | |
download | u-boot-2a15c676fa3413e7995e2a8b47e8932300e9e70b.tar.gz u-boot-2a15c676fa3413e7995e2a8b47e8932300e9e70b.tar.bz2 u-boot-2a15c676fa3413e7995e2a8b47e8932300e9e70b.zip |
led: enable LEDST_BLINK state unconditionally
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>
-rw-r--r-- | cmd/led.c | 8 | ||||
-rw-r--r-- | drivers/led/led-uclass.c | 10 | ||||
-rw-r--r-- | include/led.h | 2 |
3 files changed, 5 insertions, 15 deletions
@@ -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); diff --git a/drivers/led/led-uclass.c b/drivers/led/led-uclass.c index f37bf6a155..4932b90114 100644 --- a/drivers/led/led-uclass.c +++ b/drivers/led/led-uclass.c @@ -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) { diff --git a/include/led.h b/include/led.h index a635316628..9b24a4ce18 100644 --- a/include/led.h +++ b/include/led.h @@ -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, }; |