[PATCH v2 1/2] spl: enable regulator-boot-on and disable regulator-force-boot-off

Quentin Schulz foss+uboot at 0leil.net
Fri Jul 22 12:09:07 CEST 2022


From: Quentin Schulz <quentin.schulz at 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 at 0leil.net>
Tested-by: Xavier Drudis Ferran <xdrudis at tinet.cat>
Signed-off-by: Quentin Schulz <quentin.schulz at 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;
-- 
2.37.1



More information about the U-Boot mailing list