From: Quentin Schulz <quentin.sch...@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+ub...@0leil.net>
Signed-off-by: Quentin Schulz <quentin.sch...@theobroma-systems.com>
---

 - RFC because only tested on Puma Haikou RK3399

 common/spl/spl.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/common/spl/spl.c b/common/spl/spl.c
index c8c463f80b..762e9918c7 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -37,6 +37,9 @@
 #include <fdt_support.h>
 #include <bootcount.h>
 #include <wdt.h>
+#if CONFIG_IS_ENABLED(DM_REGULATOR)
+#include <power/regulator.h>
+#endif
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -766,6 +769,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
-- 
2.36.1

Reply via email to