On Feb 2, 2011, at 12:21 PM, Kumar Gala wrote: > We can simplify some cpu/SoC level initialization by moving it to be > after the environment and non-volatile storage is setup as there might > be dependancies on such things in various boot configurations. > > For example for FSL SoC's with QE if we boot from NAND we need it setup > to extra the ucode image to initialize the QE. If we always do this > after environment & non-volatile storage is working we can have the code > be the same regardless of NOR, NAND, SPI, MMC boot. > > Signed-off-by: Kumar Gala <[email protected]> > --- > * This is really second version of the cpu_late_init_r patch > - changed where we call cpu_secondary_init_r to be right after env_relocate > > arch/powerpc/cpu/mpc85xx/cpu_init.c | 15 +++++++++------ > arch/powerpc/lib/board.c | 14 ++++++++++++++ > 2 files changed, 23 insertions(+), 6 deletions(-) > > diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init.c > b/arch/powerpc/cpu/mpc85xx/cpu_init.c > index 8ece970..215b7b3 100644 > --- a/arch/powerpc/cpu/mpc85xx/cpu_init.c > +++ b/arch/powerpc/cpu/mpc85xx/cpu_init.c > @@ -384,12 +384,6 @@ int cpu_init_r(void) > > enable_cpc(); > > -#ifdef CONFIG_QE > - uint qe_base = CONFIG_SYS_IMMR + 0x00080000; /* QE immr base */ > - qe_init(qe_base); > - qe_reset(); > -#endif > - > /* needs to be in ram since code uses global static vars */ > fsl_serdes_init(); > > @@ -449,3 +443,12 @@ int sata_initialize(void) > return 1; > } > #endif > + > +void cpu_secondary_init_r(void) > +{ > +#ifdef CONFIG_QE > + uint qe_base = CONFIG_SYS_IMMR + 0x00080000; /* QE immr base */ > + qe_init(qe_base); > + qe_reset(); > +#endif > +} > diff --git a/arch/powerpc/lib/board.c b/arch/powerpc/lib/board.c > index b88cf6b..38ca1f8 100644 > --- a/arch/powerpc/lib/board.c > +++ b/arch/powerpc/lib/board.c > @@ -186,6 +186,12 @@ int __board_flash_wp_on(void) > } > int board_flash_wp_on(void) __attribute__((weak, > alias("__board_flash_wp_on"))); > > +void __cpu_secondary_init_r(void) > +{ > +} > +void cpu_secondary_init_r(void) > +__attribute__((weak, alias("__cpu_secondary_init_r"))); > + > static int init_func_ram (void) > { > #ifdef CONFIG_BOARD_TYPES > @@ -798,6 +804,14 @@ void board_init_r (gd_t *id, ulong dest_addr) > env_relocate (); > > /* > + * after non-volatile devices & environment is setup and cpu code have > + * another round to deal with any initialization that might require > + * full access to the environment or loading of some image (firmware) > + * from a non-volatile device > + */ > + cpu_secondary_init_r(); > + > + /* > * Fill in missing fields of bd_info. > * We do this here, where we have "normal" access to the > * environment; we used to do this still running from ROM, > -- > 1.6.0.6
Wolfgang, Any comments on this, based on the discussion here: http://lists.denx.de/pipermail/u-boot/2011-January/086567.html http://lists.denx.de/pipermail/u-boot/2011-February/086711.html - k _______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

