From: Siva Durga Prasad Paladugu <siva.durga.palad...@xilinx.com> Don't relocate fdt in case of CONFIG_OF EMBED as the fdt is already embedded with u-boot image. Update fdt_blob after relocation as the fdt will be copied during u-boot relocation.
Signed-off-by: Siva Durga Prasad Paladugu <siva...@xilinx.com> Signed-off-by: Michal Simek <michal.si...@xilinx.com> Reviewed-by: Alexey Brodkin <abrod...@synopsys.com> Reviewed-by: Bin Meng <bmeng...@gmail.com> Tested-by: Bin Meng <bmeng...@gmail.com> (QEMU x86) Tested-by: Thomas Chou <tho...@wytron.com.tw> (Nios2) Acked-by: Thomas Chou <tho...@wytron.com.tw> Acked-by: Simon Glass <s...@chromium.org> --- Changes in v4: - board: Update fdt_blob after relocation. Updating it before relocation may cause issue with some devices if they try to use it before it actually relocated Changes in v3: - Remove maybe unused and move ifdefs to functions directly - reported by Simon Changes in v2: - Fix commit message reported by Alexey common/board_f.c | 4 ++++ common/board_r.c | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/common/board_f.c b/common/board_f.c index b035c90ff3b7..668a0478a45b 100644 --- a/common/board_f.c +++ b/common/board_f.c @@ -510,6 +510,7 @@ static int reserve_global_data(void) static int reserve_fdt(void) { +#ifndef CONFIG_OF_EMBED /* * If the device tree is sitting immediately above our image then we * must relocate it. If it is embedded in the data section, then it @@ -523,6 +524,7 @@ static int reserve_fdt(void) debug("Reserving %lu Bytes for FDT at: %08lx\n", gd->fdt_size, gd->start_addr_sp); } +#endif return 0; } @@ -660,12 +662,14 @@ static int setup_dram_config(void) static int reloc_fdt(void) { +#ifndef CONFIG_OF_EMBED if (gd->flags & GD_FLG_SKIP_RELOC) return 0; if (gd->new_fdt) { memcpy(gd->new_fdt, gd->fdt_blob, gd->fdt_size); gd->fdt_blob = gd->new_fdt; } +#endif return 0; } diff --git a/common/board_r.c b/common/board_r.c index f7118e8fc486..8b6576c233f2 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -165,6 +165,14 @@ static int initr_reloc_global_data(void) */ gd->env_addr += gd->relocaddr - CONFIG_SYS_MONITOR_BASE; #endif +#ifdef CONFIG_OF_EMBED + /* + * The fdt_blob needs to be moved to new relocation address + * incase of FDT blob is embedded with in image + */ + gd->fdt_blob += gd->reloc_off; +#endif + return 0; } -- 1.9.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot