This will allow to update it with fixup if the oftree support is builtin. Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@xxxxxxxxxxxx> --- v3: use the oftree only if oftree is enabled Best Regards, J. arch/arm/lib/bootm.c | 32 ++++++++++++++++++++++++++------ 1 files changed, 26 insertions(+), 6 deletions(-) diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c index 813927a..26053dc 100644 --- a/arch/arm/lib/bootm.c +++ b/arch/arm/lib/bootm.c @@ -14,6 +14,7 @@ #include <sizes.h> #include <libbb.h> #include <magicvar.h> +#include <libfdt.h> #include <asm/byteorder.h> #include <asm/setup.h> @@ -144,13 +145,22 @@ static int do_bootz_linux_fdt(int fd, struct image_data *data) end = be32_to_cpu(header->totalsize); - of_res = request_sdram_region("oftree", r->start + r->size, end); - if (!of_res) { - perror("zImage: oftree request_sdram_region"); - return -ENOMEM; - } + if (IS_BUILTIN(CONFIG_OFTREE)) { + oftree = malloc(end + 0x8000); + if (!oftree) { + perror("zImage: oftree malloc"); + return -ENOMEM; + } + } else { - oftree = (void*)of_res->start; + of_res = request_sdram_region("oftree", r->start + r->size, end); + if (!of_res) { + perror("zImage: oftree request_sdram_region"); + return -ENOMEM; + } + + oftree = (void*)of_res->start; + } memcpy(oftree, header, sizeof(*header)); @@ -164,6 +174,16 @@ static int do_bootz_linux_fdt(int fd, struct image_data *data) return -EIO; } + if (IS_BUILTIN(CONFIG_OFTREE)) { + fdt_open_into(oftree, oftree, end + 0x8000); + + ret = of_fix_tree(oftree); + if (ret) + return ret; + + data->oftree = oftree; + } + pr_info("zImage: concatenated oftree detected\n"); return 0; -- 1.7.9.1 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox