[PATCH v3 4/6] common: move ram_base calculation to independent INITCALL()
Ilias Apalodimas
ilias.apalodimas at linaro.org
Mon Apr 27 12:08:25 CEST 2026
Currently, ram_base is calculated within setup_dest_addr().
However, upcoming patches that enable U-Boot relocation to the highest
DRAM bank require ram_base to be initialized earlier.
The default dram_init_banksize() definition relies on ram_base
to calculate the start of the first bank. But following patches
will move that function to execute immediately before setup_dest_addr().
So let's split the ram_base initialization in its own INITCALL.
Reviewed-by: Simon Glass <sjg at chromium.org>
Tested-by: Anshul Dalal <anshuld at ti.com>
Tested-by: Michal Simek <michal.simek at amd.com> # Versal Gen 2 Vek385
Reviewed-by: Marek Vasut <marek.vasut+renesas at mailbox.org>
Signed-off-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
---
common/board_f.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/common/board_f.c b/common/board_f.c
index f0d07cb6f593..ac4dbf89a2e4 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -328,6 +328,14 @@ __weak int arch_setup_dest_addr(void)
return 0;
}
+static int setup_ram_base(void)
+{
+#ifdef CFG_SYS_SDRAM_BASE
+ gd->ram_base = CFG_SYS_SDRAM_BASE;
+#endif
+ return 0;
+}
+
static int setup_dest_addr(void)
{
debug("Monitor len: %08x\n", gd->mon_len);
@@ -347,9 +355,6 @@ static int setup_dest_addr(void)
* get fixed.
*/
gd->ram_size -= CONFIG_SYS_MEM_TOP_HIDE;
-#endif
-#ifdef CFG_SYS_SDRAM_BASE
- gd->ram_base = CFG_SYS_SDRAM_BASE;
#endif
gd->ram_top = gd->ram_base + get_effective_memsize();
gd->ram_top = board_get_usable_ram_top(gd->mon_len);
@@ -968,6 +973,7 @@ static void initcall_run_f(void)
* - monitor code
* - board info struct
*/
+ INITCALL(setup_ram_base);
INITCALL(setup_dest_addr);
#if CONFIG_IS_ENABLED(OF_BOARD_FIXUP) && \
!CONFIG_IS_ENABLED(OF_INITIAL_DTB_READONLY)
--
2.53.0
More information about the U-Boot
mailing list