]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
mach-snapdragon: populate fallback FDT
authorCaleb Connolly <caleb.connolly@linaro.org>
Thu, 8 Aug 2024 23:59:29 +0000 (01:59 +0200)
committerCaleb Connolly <caleb.connolly@linaro.org>
Fri, 6 Sep 2024 08:47:45 +0000 (10:47 +0200)
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>
arch/arm/mach-snapdragon/board.c

index 6dd39a6fbf3948b2a3be9ed67da6351b62bdfff9..05664acb76dc49737a851c95252dad07c3176713 100644 (file)
@@ -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();