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

Reply via email to