[U-Boot] [PATCH 11/13] nand_spl_simple: store temp data at CONFIG_SPL_NAND_WORKSPACE

Igor Grinberg grinberg at compulab.co.il
Wed Nov 30 09:06:47 CET 2011


Hi Ilya,

On 11/28/11 18:37, Ilya Yanok wrote:
> Currently nand_spl_simple puts it's temp data at 0x10000 offset in SDRAM
> which is likely to contain already loaded data. I can't see any way to
> determine some safe address automagically so make it up to board porter
> to provide the safe-to-use address via CONFIG_SPL_NAND_WORKSPACE value.
> 
> Signed-off-by: Ilya Yanok <yanok at emcraft.com>
> ---
>  drivers/mtd/nand/nand_spl_simple.c |    7 ++++++-
>  1 files changed, 6 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/mtd/nand/nand_spl_simple.c b/drivers/mtd/nand/nand_spl_simple.c
> index ed821f2..70f3cfe 100644
> --- a/drivers/mtd/nand/nand_spl_simple.c
> +++ b/drivers/mtd/nand/nand_spl_simple.c
> @@ -199,8 +199,13 @@ static int nand_read_page(int block, int page, void *dst)
>  
>  	/* No malloc available for now, just use some temporary locations
>  	 * in SDRAM
> +	 * Please provide some safe value for CONFIG_SPL_NAND_WORKSPACE in
> +	 * your board configuration, this is just a guess!!
>  	 */
> -	ecc_calc = (u_char *)(CONFIG_SYS_SDRAM_BASE + 0x10000);
> +#ifndef CONFIG_SPL_NAND_WORKSPACE
> +#define CONFIG_SPL_NAND_WORKSPACE	(CONFIG_SYS_SDRAM_BASE + 0x10000)
> +#endif
> +	ecc_calc = (u_char *)CONFIG_SPL_NAND_WORKSPACE;
>  	ecc_code = ecc_calc + 0x100;
>  	oob_data = ecc_calc + 0x200;

If you change this, you probably should change also
the second version of this function (CONFIG_SYS_NAND_HW_ECC_OOBFIRST)
or instead pass it as a parameter to the finction(s) from an upper layer.

Have you tried to use the stack as a buffer for those calculations?


-- 
Regards,
Igor.


More information about the U-Boot mailing list