From: Simon Glass Date: Mon, 24 Oct 2011 19:15:33 +0000 (+0000) Subject: fdt: ARM: Implement and verify embedded and separate device tree X-Git-Tag: v2011.12-rc1~411 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=f5437ad141e13ff03dccb24707e8100d2b0295fd;p=oweals%2Fu-boot.git fdt: ARM: Implement and verify embedded and separate device tree This locates the device tree either embedded within U-Boot or attached to the end as a separate binary. When CONFIG_OF_CONTROL is defined, U-Boot requires a valid fdt. A check is provided for this early in initialisation. Signed-off-by: Simon Glass --- diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index 7434b34f9c..bd6d4e319a 100644 --- a/arch/arm/lib/board.c +++ b/arch/arm/lib/board.c @@ -48,6 +48,8 @@ #include #include #include +#include +#include #include #include @@ -233,6 +235,9 @@ init_fnc_t *init_sequence[] = { #endif #if defined(CONFIG_BOARD_EARLY_INIT_F) board_early_init_f, +#endif +#ifdef CONFIG_OF_CONTROL + fdtdec_check_fdt, #endif timer_init, /* initialize timer */ #ifdef CONFIG_FSL_ESDHC @@ -274,6 +279,13 @@ void board_init_f(ulong bootflag) memset((void *)gd, 0, sizeof(gd_t)); gd->mon_len = _bss_end_ofs; +#ifdef CONFIG_OF_EMBED + /* Get a pointer to the FDT */ + gd->fdt_blob = _binary_dt_dtb_start; +#elif defined CONFIG_OF_SEPARATE + /* FDT is at end of image */ + gd->fdt_blob = (void *)(_end_ofs + _TEXT_BASE); +#endif for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) { if ((*init_fnc_ptr)() != 0) {