diff options
author | Siva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com> | 2015-12-03 15:46:03 +0100 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2015-12-05 18:22:34 -0500 |
commit | e9acb9ea430e3638f1306993b10a10385092b20a (patch) | |
tree | cbed5bc953f7749a91645feca1cfdb14b7e37f00 | |
parent | b4857aa90105ea85bf029f8eb99e72fbadc0e2d0 (diff) |
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 <sivadur@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Alexey Brodkin <abrodkin@synopsys.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com> (QEMU x86)
Tested-by: Thomas Chou <thomas@wytron.com.tw> (Nios2)
Acked-by: Thomas Chou <thomas@wytron.com.tw>
Acked-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | common/board_f.c | 4 | ||||
-rw-r--r-- | common/board_r.c | 8 |
2 files changed, 12 insertions, 0 deletions
diff --git a/common/board_f.c b/common/board_f.c index 8325dc333c..eac7c5e4c5 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 3bf49fdfb3..5af32dd65b 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; } |