Message ID | 1318693706-3381-5-git-send-email-sjg@chromium.org |
---|---|
State | New, archived |
Headers | show |
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@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 > /* > * 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
Hi Kumar, On Thu, Oct 20, 2011 at 10:13 PM, Kumar Gala <galak@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@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 > >
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 + /* * 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) {
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@chromium.org> --- arch/arm/lib/board.c | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-)