diff options
| author | Tom Rini <[email protected]> | 2024-07-30 12:36:22 -0600 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2024-07-30 14:31:24 -0600 |
| commit | 8877bc51a8a4d921ba2f163208b8b1a57ba47c18 (patch) | |
| tree | 48517a63da5f45a1d14c813578bcedc62c210022 /cmd | |
| parent | c0d269da3c8492d4b81bbcb79a66f6d4a49f7610 (diff) | |
| parent | f15e89efad6f1bd7ddeb6fc5209427133cf22150 (diff) | |
Merge patch series "led: implement software blinking"
Mikhail Kshevetskiy <[email protected]> says:
v2 changes:
* Drop sw_blink_state structure, move its necessary fields to
led_uc_plat structure.
* Add cyclic_info pointer to led_uc_plat structure. This
simplify code a lot.
* Remove cyclic function search logic. Not needed anymore.
* Fix blinking period. It was twice large.
* Other cleanups.
v3 changes:
* Adapt code to recent cyclic function changes
* Move software blinking functions to separate file
* Other small changes
v4 changes:
* Refactoring of led_set_period() function
v5 changes
* Fix compilation if CONFIG_LED_BLINK is not defined
v6 changes:
* Enable LEDST_BLINK state unconditionally.
* Function led_set_period() becomes available when CONFIG_LED_BLINK
is disabled. This makes led code simpler.
* Software blinking requires about 100 bytes of data for a led. It's
not a good idea to allocate so much memory for each supported led.
Change the code to allocate blinking data only for required leds.
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/led.c | 8 |
1 files changed, 0 insertions, 8 deletions
diff --git a/cmd/led.c b/cmd/led.c index 4256b3429c2..2f786f34c67 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); |
