diff options
Diffstat (limited to 'board/st/stm32mp2/stm32mp2.c')
-rw-r--r-- | board/st/stm32mp2/stm32mp2.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/board/st/stm32mp2/stm32mp2.c b/board/st/stm32mp2/stm32mp2.c index 8446b8fd3d6..576a958c783 100644 --- a/board/st/stm32mp2/stm32mp2.c +++ b/board/st/stm32mp2/stm32mp2.c @@ -8,6 +8,7 @@ #include <config.h> #include <env_internal.h> #include <fdt_support.h> +#include <led.h> #include <log.h> #include <misc.h> #include <mmc.h> @@ -54,9 +55,46 @@ int checkboard(void) return 0; } +static int get_led(struct udevice **dev, char *led_string) +{ + const char *led_name; + int ret; + + led_name = ofnode_conf_read_str(led_string); + if (!led_name) { + log_debug("could not find %s config string\n", led_string); + return -ENOENT; + } + ret = led_get_by_label(led_name, dev); + if (ret) { + log_debug("get=%d\n", ret); + return ret; + } + + return 0; +} + +static int setup_led(enum led_state_t cmd) +{ + struct udevice *dev; + int ret; + + if (!CONFIG_IS_ENABLED(LED)) + return 0; + + ret = get_led(&dev, "u-boot,boot-led"); + if (ret) + return ret; + + ret = led_set_state(dev, cmd); + return ret; +} + /* board dependent setup after realloc */ int board_init(void) { + setup_led(LEDST_ON); + return 0; } @@ -142,3 +180,8 @@ int board_late_init(void) return 0; } + +void board_quiesce_devices(void) +{ + setup_led(LEDST_OFF); +} |