[U-Boot] [PATCH v4 4/6] fdt: ARM: Implement and verify embedded and separate device tree

Simon Glass sjg at chromium.org
Tue Oct 25 14:40:16 CEST 2011


Hi Kumar,

On Thu, Oct 20, 2011 at 10:13 PM, Kumar Gala <galak at kernel.crashing.org> wrote:
>
> On Oct 15, 2011, at 10:48 AM, Simon Glass wrote:
>
>> 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 <sjg at chromium.org>
>> ---
>> arch/arm/lib/board.c |   22 ++++++++++++++++++++++
>> 1 files changed, 22 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c
>> index 1fe3751..b0f3162 100644
>> --- a/arch/arm/lib/board.c
>> +++ b/arch/arm/lib/board.c
>> @@ -48,6 +48,7 @@
>> #include <nand.h>
>> #include <onenand_uboot.h>
>> #include <mmc.h>
>> +#include <libfdt.h>
>> #include <post.h>
>> #include <logbuff.h>
>>
>> @@ -197,6 +198,17 @@ static int arm_pci_init(void)
>> }
>> #endif /* CONFIG_CMD_PCI || CONFIG_PCI */
>>
>> +#ifdef CONFIG_OF_CONTROL
>> +static int check_fdt(void)
>> +{
>> +     /* We must have an fdt */
>> +     if (fdt_check_header(gd->fdt_blob))
>> +             panic("No valid fdt found - please append one to U-Boot\n"
>> +                     "binary or define CONFIG_OF_EMBED\n");
>> +     return 0;
>> +}
>> +#endif
>> +
>
> this isn't arm specific, maybe put in fdt_support.c

Thanks. I have made this change in v6.

Regards,
Simon

>
>> /*
>>  * Breathe some life into the board...
>>  *
>> @@ -239,6 +251,9 @@ init_fnc_t *init_sequence[] = {
>> #if defined(CONFIG_BOARD_EARLY_INIT_F)
>>       board_early_init_f,
>> #endif
>> +#ifdef CONFIG_OF_CONTROL
>> +     check_fdt,
>> +#endif
>>       timer_init,             /* initialize timer */
>> #ifdef CONFIG_FSL_ESDHC
>>       get_clocks,
>> @@ -276,6 +291,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) {
>> --
>> 1.7.3.1
>
>


More information about the U-Boot mailing list