[U-Boot] [PATCH v6 1/2] powerpc:mpc85xx: Add ifc nand boot support for TPL/SPL
Prabhakar Kushwaha
prabhakar at freescale.com
Mon Jan 13 07:28:07 CET 2014
On 1/10/2014 7:40 AM, Po Liu wrote:
> Using the TPL method for nand boot by sram was already
> supported. Here add some code for mpc85xx ifc nand boot.
>
> - For ifc, elbc, esdhc, espi, all need the SPL without
> section .resetvec.
> - Use a clear function name for nand spl boot.
> - Add CONFIG_SPL_DRIVERS_MISC_SUPPORT to compile the fsl_ifc.c
> in spl/Makefile;
>
> Signed-off-by: Po Liu <Po.Liu at freescale.com>
> ---
> changes for v2:
> - seperate public code and c29xpcie board code
> - add ifc support
> changes for v3:
> - remove the redundant plus
> - ifc support use CONFIG_SPL_DRIVERS_MISC_SUPPORT
> changes for v4:
> - modify the nand_load function
> - add comments in README.SPL
> changes for v5:
> -none
> changes for v6:
> - modify the readme file for the include lib file
>
> arch/powerpc/cpu/mpc85xx/u-boot-spl.lds | 15 ++++++++-------
> doc/README.SPL | 1 +
> drivers/mtd/nand/fsl_ifc_spl.c | 31 ++++++++++++++++++++++++-------
> spl/Makefile | 1 +
> 4 files changed, 34 insertions(+), 14 deletions(-)
>
> diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds b/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
> index bc13267..acaa093 100644
> --- a/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
> +++ b/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
> @@ -57,7 +57,14 @@ SECTIONS
> . = ALIGN(8);
> __init_begin = .;
> __init_end = .;
> -/* FIXME for non-NAND SPL */
> +
> +/* For ifc, elbc, esdhc, espi, all need the SPL without section .resetvec */
> +#ifdef CONFIG_SYS_MPC85XX_NO_RESETVEC
> + .bootpg ADDR(.text) - 0x1000 :
> + {
> + KEEP(*(.bootpg))
> + } :text = 0xffff
> +#else
> #if defined(CONFIG_FSL_IFC) /* Restrict bootpg at 4K boundry for IFC */
> .bootpg ADDR(.text) + 0x1000 :
> {
> @@ -69,12 +76,6 @@ SECTIONS
> #else
> #error unknown NAND controller
> #endif
> -#ifdef CONFIG_SYS_MPC85XX_NO_RESETVEC
> - .bootpg ADDR(.text) - 0x1000 :
> - {
> - KEEP(*(.bootpg))
> - } :text = 0xffff
> -#else
> .resetvec ADDR(.text) + RESET_VECTOR_OFFSET : {
> KEEP(*(.resetvec))
> } = 0xffff
> diff --git a/doc/README.SPL b/doc/README.SPL
> index 312a6a6..b1bc3ca 100644
> --- a/doc/README.SPL
> +++ b/doc/README.SPL
> @@ -62,6 +62,7 @@ CONFIG_SPL_FAT_SUPPORT (fs/fat/libfat.o)
> CONFIG_SPL_LIBGENERIC_SUPPORT (lib/libgeneric.o)
> CONFIG_SPL_POWER_SUPPORT (drivers/power/libpower.o)
> CONFIG_SPL_NAND_SUPPORT (drivers/mtd/nand/libnand.o)
> +CONFIG_SPL_DRIVERS_MISC_SUPPORT (drivers/misc)
> CONFIG_SPL_DMA_SUPPORT (drivers/dma/libdma.o)
> CONFIG_SPL_POST_MEM_SUPPORT (post/drivers/memory.o)
> CONFIG_SPL_NAND_LOAD (drivers/mtd/nand/nand_spl_load.o)
> diff --git a/drivers/mtd/nand/fsl_ifc_spl.c b/drivers/mtd/nand/fsl_ifc_spl.c
> index 9de327b..6b43496 100644
> --- a/drivers/mtd/nand/fsl_ifc_spl.c
> +++ b/drivers/mtd/nand/fsl_ifc_spl.c
> @@ -88,7 +88,11 @@ static inline int bad_block(uchar *marker, int port_size)
> return __raw_readw((u16 *)marker) != 0xffff;
> }
>
> -static void nand_load(unsigned int offs, int uboot_size, uchar *dst)
> +#ifdef CONFIG_TPL_BUILD
> +int nand_spl_load_image(uint32_t offs, unsigned int uboot_size, void *vdst)
> +#else
> +static int nand_load(uint32_t offs, unsigned int uboot_size, void *vdst)
> +#endif
nand_load definition is
static void nand_load(unsigned int offs, int uboot_size, uchar *dst);
have you checked the compilation warning for non TPL framework?
Regards,
Prabhakar
More information about the U-Boot
mailing list