From e9acb9ea430e3638f1306993b10a10385092b20a Mon Sep 17 00:00:00 2001 From: Siva Durga Prasad Paladugu Date: Thu, 3 Dec 2015 15:46:03 +0100 Subject: common: board: Dont relocate FDT incase of CONFIG_OF_EMBED 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 Signed-off-by: Michal Simek Reviewed-by: Alexey Brodkin Reviewed-by: Bin Meng Tested-by: Bin Meng (QEMU x86) Tested-by: Thomas Chou (Nios2) Acked-by: Thomas Chou Acked-by: Simon Glass --- common/board_f.c | 4 ++++ common/board_r.c | 8 ++++++++ 2 files changed, 12 insertions(+) (limited to 'common') diff --git a/common/board_f.c b/common/board_f.c index 8325dc333c6..eac7c5e4c50 100644 --- a/common/board_f.c +++ b/common/board_f.c @@ -524,6 +524,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 @@ -537,6 +538,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; } @@ -674,12 +676,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 3bf49fdfb37..5af32dd65be 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -168,6 +168,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; } -- cgit v1.2.3