Set the fdt_addr_r environment variable to a region of LMB allocated memory, and populate it by default with a copy of U-Boots FDT. This will be used for Linux if no other DT is provided.
Signed-off-by: Caleb Connolly <caleb.conno...@linaro.org> --- arch/arm/mach-snapdragon/board.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/arch/arm/mach-snapdragon/board.c b/arch/arm/mach-snapdragon/board.c index 37925c40f36f..8c0c7394698b 100644 --- a/arch/arm/mach-snapdragon/board.c +++ b/arch/arm/mach-snapdragon/board.c @@ -423,8 +423,9 @@ void __weak qcom_late_init(void) int board_late_init(void) { struct lmb lmb; u32 status = 0; + phys_addr_t fdt_addr; lmb_init_and_reserve(&lmb, gd->bd, (void *)gd->fdt_blob); /* We need to be fairly conservative here as we support boards with just 1G of TOTAL RAM */ @@ -435,13 +436,17 @@ int board_late_init(void) if (IS_ENABLED(CONFIG_FASTBOOT)) status |= env_set_hex("fastboot_addr_r", addr_alloc(&lmb, FASTBOOT_BUF_SIZE)); status |= env_set_hex("scriptaddr", addr_alloc(&lmb, SZ_4M)); status |= env_set_hex("pxefile_addr_r", addr_alloc(&lmb, SZ_4M)); - status |= env_set_hex("fdt_addr_r", addr_alloc(&lmb, SZ_2M)); + fdt_addr = addr_alloc(&lmb, SZ_2M); + status |= env_set_hex("fdt_addr_r", fdt_addr); if (status) log_warning("%s: Failed to set run time variables\n", __func__); + /* By default copy U-Boots FDT, it will be used as a fallback */ + memcpy((void *)fdt_addr, (void *)gd->fdt_blob, gd->fdt_size); + configure_env(); qcom_late_init(); return 0; -- 2.46.0