Hi Bo,

just a short review, more will follow this weekend.

On 01/16/2015 03:53 AM, Bo Shen wrote:
> Supports boot up from NAND flash with software ECC eanbled.
> And supports boot up from SD/MMC card with FAT file system.
> 
> As the boot from SD/MMC card with FAT file system, the BSS
> segment is too big to fit into SRAM, so, use the lds to put
> it into SDRAM. So, we need to initialize the SDRAM as soon
> as possible. Borrow the low level init code from
> <arm/arm/cpu/armv7/lowlevel_init.S> for this purpose.
> 
> As there is a little change, which need lowlevel init, so
> also change taurus board based on at91sam9260, corvus board
> based on at91sam9g45.
> (CONFIG_SPL_STACK is replaced by CONFIG_SYS_INIT_SP_ADDR)
> 
> Signed-off-by: Bo Shen <voice.s...@atmel.com>
> ---
> 
>  arch/arm/Kconfig                                |  1 +
>  arch/arm/cpu/arm926ejs/at91/Makefile            |  4 ++
>  arch/arm/cpu/arm926ejs/at91/spl_lowlevel_init.S | 37 ++++++++++++
>  arch/arm/cpu/at91-common/spl_at91.c             |  7 +--
>  arch/arm/cpu/at91-common/u-boot-spl-arm9.lds    | 48 +++++++++++++++
>  board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c | 80 
> +++++++++++++++++++++++++
>  configs/at91sam9m10g45ek_mmc_defconfig          |  5 +-
>  configs/at91sam9m10g45ek_nandflash_defconfig    |  5 +-
>  include/configs/at91sam9m10g45ek.h              | 65 ++++++++++++++++++++
>  include/configs/corvus.h                        |  7 ++-
>  include/configs/taurus.h                        |  7 ++-
>  11 files changed, 256 insertions(+), 10 deletions(-)
>  create mode 100644 arch/arm/cpu/arm926ejs/at91/spl_lowlevel_init.S
>  create mode 100644 arch/arm/cpu/at91-common/u-boot-spl-arm9.lds
> 
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 5eb1d03..f4788c6 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -141,6 +141,7 @@ config TARGET_AT91SAM9263EK
>  config TARGET_AT91SAM9M10G45EK
>       bool "Support at91sam9m10g45ek"
>       select CPU_ARM926EJS
> +     select SUPPORT_SPL
>  
>  config TARGET_AT91SAM9N12EK
>       bool "Support at91sam9n12ek"
> diff --git a/arch/arm/cpu/arm926ejs/at91/Makefile 
> b/arch/arm/cpu/arm926ejs/at91/Makefile
> index 698a28d..238434b 100644
> --- a/arch/arm/cpu/arm926ejs/at91/Makefile
> +++ b/arch/arm/cpu/arm926ejs/at91/Makefile
> @@ -25,5 +25,9 @@ obj-y       += reset.o
>  obj-y        += timer.o
>  
>  ifndef CONFIG_SKIP_LOWLEVEL_INIT
> +ifdef CONFIG_SPL_BUILD
> +obj-y        += spl_lowlevel_init.o
> +else
>  obj-y        += lowlevel_init.o
>  endif
> +endif

I'm fine with having two variants of lowlevel_init for a time, but we
should consolidate this and use C-style initialisation of SDRAM and
stuff for the other armv5 at91 devices in future. AFAIK the
a/a/c/arm926ejs/at91/lowlevel_init.S is mainly used for NOR Flash boots,
so using the SPL code (but not necessarily the two binary mechanism) for
the NOR Flash boots in future is appreciated.

> diff --git a/arch/arm/cpu/arm926ejs/at91/spl_lowlevel_init.S 
> b/arch/arm/cpu/arm926ejs/at91/spl_lowlevel_init.S
> new file mode 100644
> index 0000000..f1b2ec9
> --- /dev/null
> +++ b/arch/arm/cpu/arm926ejs/at91/spl_lowlevel_init.S
> @@ -0,0 +1,37 @@
> +/*
> + * A lowlevel_init function that sets up the stack to call a C function to
> + * perform further init.
> + *
> + * (C) Copyright 2010
> + * Texas Instruments, <www.ti.com>
> + *
> + * Author :
> + *   Aneesh V        <ane...@ti.com>
> + *
> + * SPDX-License-Identifier:  GPL-2.0+
> + */
> +
> +#include <asm-offsets.h>
> +#include <config.h>
> +#include <linux/linkage.h>
> +
> +ENTRY(lowlevel_init)
> +     /*
> +      * Setup a temporary stack
> +      */
> +     ldr     sp, =CONFIG_SYS_INIT_SP_ADDR
> +     bic     sp, sp, #7 /* 8-byte alignment for ABI compliance */
> +
> +     ldr     r9, =gdata

I remember some patches removing the SPL gdata stuff, is that true?

> +
> +     /*
> +      * Save the old lr(passed in ip) and the current lr to stack
> +      */
> +     push    {ip, lr}
> +
> +     /*
> +      * go setup pll, mux, memory
> +      */
> +     bl      s_init
> +     pop     {ip, pc}
> +ENDPROC(lowlevel_init)

Rest of this patch will be reviewed later.

Best regards

Andreas Bießmann

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to