summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>2024-07-19 13:12:11 +0400
committerTom Rini <trini@konsulko.com>2024-07-30 12:35:23 -0600
commit2a15c676fa3413e7995e2a8b47e8932300e9e70b (patch)
tree68807c039afc26f83cf2e83a3fbfe7b01a6d4a6d
parentcb0b7ab607aa71ae4b77a2b4d30d3d604c8324af (diff)
downloadu-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.c8
-rw-r--r--drivers/led/led-uclass.c10
-rw-r--r--include/led.h2
3 files changed, 5 insertions, 15 deletions
diff --git a/cmd/led.c b/cmd/led.c
index 4256b3429c..2f786f34c6 100644
--- 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);
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,
};