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