Hi Ravi, > In single stage bootmode or falcon boot mode, > the SPL shall update the memory dt nodes > spl_fixup_fdt() based on DDR configuration for > specific platform. > > Signed-off-by: Ravi Babu <ravib...@ti.com> > --- > common/spl/spl.c | 40 ++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 40 insertions(+) > > diff --git a/common/spl/spl.c b/common/spl/spl.c > index f11b370..b9b1331 100644 > --- a/common/spl/spl.c > +++ b/common/spl/spl.c > @@ -17,6 +17,7 @@ > #include <malloc.h> > #include <dm/root.h> > #include <linux/compiler.h> > +#include <fdt_support.h> > > DECLARE_GLOBAL_DATA_PTR; > > @@ -56,6 +57,14 @@ __weak int spl_start_uboot(void) > return 1; > } > > +/* weak default platform specific function to initialize > + * dram banks > + */ > +__weak int dram_init_banksize(void) > +{ > + return 0; > +} > + > /* > * Weak default function for arch specific zImage check. Return zero > * and fill start and end address if image is recognized. > @@ -66,6 +75,33 @@ int __weak bootz_setup(ulong image, ulong *start, > ulong *end) } > #endif > > +void spl_fixup_fdt(void) > +{ > +#if defined(CONFIG_SPL_OF_LIBFDT) && > defined(CONFIG_SYS_SPL_ARGS_ADDR) > + void *fdt_blob = (void *)CONFIG_SYS_SPL_ARGS_ADDR; > + int err; > + > + err = fdt_check_header(fdt_blob); > + if (err < 0) { > + printf("fdt_root: %s\n", fdt_strerror(err)); > + return; > + } > + > + /* fixup the memory dt node */ > + err = fdt_shrink_to_minimum(fdt_blob, 0); > + if (err == 0) { > + printf("spl: fdt_shrink_to_minimum err - %d\n", err); > + return; > + } > + > + err = arch_fixup_fdt(fdt_blob); > + if (err) { > + printf("spl: arch_fixup_fdt err - %d\n", err); > + return; > + } > +#endif > +} > + > /* > * Weak default function for board specific cleanup/preparation > before > * Linux boot. Some boards/platforms might not need it, so just > provide @@ -323,6 +359,9 @@ void board_init_r(gd_t *dummy1, ulong > dummy2) > debug(">>spl:board_init_r()\n"); > gd->bd = &bdata; > +#ifdef CONFIG_SPL_OS_BOOT > + dram_init_banksize();
What is the purpose of this function? In this point the SDRAM should be already configured. In patch 2/5 you already configured TI's specific "board_init_f" to add some memory related information to gd struct. > +#endif > > #if defined(CONFIG_SYS_SPL_MALLOC_START) > mem_malloc_init(CONFIG_SYS_SPL_MALLOC_START, > @@ -361,6 +400,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2) > #ifdef CONFIG_SPL_OS_BOOT > case IH_OS_LINUX: > debug("Jumping to Linux\n"); > + spl_fixup_fdt(); > spl_board_prepare_for_linux(); > jump_to_image_linux(&spl_image, > (void > *)CONFIG_SYS_SPL_ARGS_ADDR); Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot