TPL runs before VPL. The earliest updatable phase with VBE is SPL. We
want to be able to update the RAM-init code in the field.

So when VPL is being used, init the RAM later, in SPL.

Signed-off-by: Simon Glass <s...@chromium.org>
---

(no changes since v1)

 drivers/ram/rockchip/sdram_rk3399.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/ram/rockchip/sdram_rk3399.c 
b/drivers/ram/rockchip/sdram_rk3399.c
index 6fa8f268770..9ac16dfdc71 100644
--- a/drivers/ram/rockchip/sdram_rk3399.c
+++ b/drivers/ram/rockchip/sdram_rk3399.c
@@ -194,6 +194,7 @@ struct io_setting {
 static bool phase_sdram_init(void)
 {
        return xpl_phase() == PHASE_TPL ||
+               (IS_ENABLED(CONFIG_VPL) && xpl_phase() == PHASE_SPL) ||
                (!IS_ENABLED(CONFIG_TPL) &&
                 !IS_ENABLED(CONFIG_ROCKCHIP_EXTERNAL_TPL) &&
                 !not_xpl());
@@ -3195,8 +3196,9 @@ U_BOOT_DRIVER(dmc_rk3399) = {
        .of_to_plat = rk3399_dmc_of_to_plat,
        .probe = rk3399_dmc_probe,
        .priv_auto      = sizeof(struct dram_info),
-#if defined(CONFIG_TPL_BUILD) || \
-       (!defined(CONFIG_TPL) && defined(CONFIG_XPL_BUILD))
+#if defined(CONFIG_VPL) && defined(CONFIG_SPL_BUILD) || \
+       !defined(CONFIG_VPL) && defined(CONFIG_TPL_BUILD) || \
+       !defined(CONFIG_TPL) && defined(CONFIG_SPL_BUILD)
        .plat_auto      = sizeof(struct rockchip_dmc_plat),
 #endif
 };
-- 
2.43.0

Reply via email to