X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=common%2Fimage-fdt.c;h=3002948b6b0e219f25a31ce40125ec92ce46e6df;hb=515f613253cf0a892c3a321770ab927fa3d925cf;hp=e70da3dcb33aaeb2bf72c3950b23949647751e18;hpb=5acce685c9227b3d4b48f6fab6a33f6d74ca9c14;p=oweals%2Fu-boot.git diff --git a/common/image-fdt.c b/common/image-fdt.c index e70da3dcb3..3002948b6b 100644 --- a/common/image-fdt.c +++ b/common/image-fdt.c @@ -11,11 +11,14 @@ #include #include #include +#include #include #include +#include #include #include #include +#include #ifndef CONFIG_SYS_FDT_PAD #define CONFIG_SYS_FDT_PAD 0x3000 @@ -120,7 +123,7 @@ void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob) /* check if this subnode has a reg property */ ret = fdt_get_resource(fdt_blob, subnode, "reg", 0, &res); - if (!ret) { + if (!ret && fdtdec_get_is_enabled(fdt_blob, subnode)) { addr = res.start; size = res.end - res.start + 1; boot_fdt_reserve_region(lmb, addr, size); @@ -283,7 +286,8 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch, *of_flat_tree = NULL; *of_size = 0; - img_addr = (argc == 0) ? load_addr : simple_strtoul(argv[0], NULL, 16); + img_addr = (argc == 0) ? image_load_addr : + simple_strtoul(argv[0], NULL, 16); buf = map_sysmem(img_addr, 0); if (argc > 2) @@ -302,7 +306,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch, else if (images->fit_uname_os) default_addr = (ulong)images->fit_hdr_os; else - default_addr = load_addr; + default_addr = image_load_addr; if (fit_parse_conf(select, default_addr, &fdt_addr, &fit_uname_config)) { @@ -560,6 +564,13 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob, } } + fdt_ret = optee_copy_fdt_nodes(gd->fdt_blob, blob); + if (fdt_ret) { + printf("ERROR: transfer of optee nodes to new fdt failed: %s\n", + fdt_strerror(fdt_ret)); + goto err; + } + /* Delete the old LMB reservation */ if (lmb) lmb_free(lmb, (phys_addr_t)(u32)(uintptr_t)blob,