summaryrefslogtreecommitdiff
path: root/arch/arm/mach-snapdragon
diff options
context:
space:
mode:
authorCaleb Connolly <caleb.connolly@linaro.org>2024-08-09 01:59:29 +0200
committerCaleb Connolly <caleb.connolly@linaro.org>2024-09-06 10:47:45 +0200
commitf05b69e1c4a843d36706b79aad2e508ca9dc0938 (patch)
tree00d2690d79cc3a6630dbfc70f0f9aab7d7ba6d68 /arch/arm/mach-snapdragon
parent8bf5cadcb434b2170a5390b41927632b45902325 (diff)
mach-snapdragon: populate fallback FDT
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. Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
Diffstat (limited to 'arch/arm/mach-snapdragon')
-rw-r--r--arch/arm/mach-snapdragon/board.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/arch/arm/mach-snapdragon/board.c b/arch/arm/mach-snapdragon/board.c
index 6dd39a6fbf3..05664acb76d 100644
--- a/arch/arm/mach-snapdragon/board.c
+++ b/arch/arm/mach-snapdragon/board.c
@@ -423,6 +423,8 @@ void __weak qcom_late_init(void)
int board_late_init(void)
{
u32 status = 0;
+ phys_addr_t fdt_addr;
+ struct fdt_header *fdt_blob = (struct fdt_header *)gd->fdt_blob;
/* We need to be fairly conservative here as we support boards with just 1G of TOTAL RAM */
status |= env_set_hex("kernel_addr_r", addr_alloc(SZ_128M));
@@ -433,11 +435,15 @@ int board_late_init(void)
status |= env_set_hex("fastboot_addr_r", addr_alloc(FASTBOOT_BUF_SIZE));
status |= env_set_hex("scriptaddr", addr_alloc(SZ_4M));
status |= env_set_hex("pxefile_addr_r", addr_alloc(SZ_4M));
- status |= env_set_hex("fdt_addr_r", addr_alloc(SZ_2M));
+ fdt_addr = addr_alloc(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, fdt32_to_cpu(fdt_blob->totalsize));
+
configure_env();
qcom_late_init();