
From: Quentin Schulz quentin.schulz@theobroma-systems.com
This makes sure regulators that need to be turned on or off at boot are turned on or off in the SPL.
This may be required for the SPL to do some operations, such as finding possible loading media for U-Boot proper.
Cc: Quentin Schulz foss+uboot@0leil.net Tested-by: Xavier Drudis Ferran xdrudis@tinet.cat Signed-off-by: Quentin Schulz quentin.schulz@theobroma-systems.com ---
v2: - added Tested-by, - fixed build for boards with SPL_DM_REGULATOR disabled by always included power/regulator.h and defining a dummy implementation for regulators_enable_boot_off,
common/spl/spl.c | 10 ++++++++++ include/power/regulator.h | 5 +++++ 2 files changed, 15 insertions(+)
diff --git a/common/spl/spl.c b/common/spl/spl.c index 29e0898f03..6ab997279d 100644 --- a/common/spl/spl.c +++ b/common/spl/spl.c @@ -39,6 +39,7 @@ #include <fdt_support.h> #include <bootcount.h> #include <wdt.h> +#include <power/regulator.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_BINMAN_MAGIC_SYM; @@ -773,6 +774,15 @@ void board_init_r(gd_t *dummy1, ulong dummy2) if (CONFIG_IS_ENABLED(GPIO_HOG)) gpio_hog_probe_all();
+ if (CONFIG_IS_ENABLED(DM_REGULATOR)) { + if (regulators_enable_boot_on(false)) + debug("%s: Cannot enable boot on regulator\n", + __func__); + if (regulators_enable_boot_off(false)) + debug("%s: Cannot enable boot off regulator\n", + __func__); + } + #if CONFIG_IS_ENABLED(BOARD_INIT) spl_board_init(); #endif diff --git a/include/power/regulator.h b/include/power/regulator.h index ff1bfc2435..4bce61dd9f 100644 --- a/include/power/regulator.h +++ b/include/power/regulator.h @@ -631,6 +631,11 @@ static inline int regulators_enable_boot_on(bool verbose) return -ENOSYS; }
+static inline int regulators_enable_boot_off(bool verbose) +{ + return -ENOSYS; +} + static inline int regulator_autoset(struct udevice *dev) { return -ENOSYS;