[U-Boot] [PATCH 7/10] driver/mtd/spi:Read 8KB data chunk during u-boot load in SPL

Scott Wood scottwood at freescale.com
Wed Apr 2 00:02:57 CEST 2014


On Mon, 2014-03-31 at 15:34 +0530, Prabhakar Kushwaha wrote:
> SPI driver perform its operation(read/write) on 64KB buffer chunk for data
> greater than 64KB. This buffer chunk is allocated from system heap.
> 
> During SPL boot, 768KB of data is read from SPI flash.
> Here, heap size may not be sufficient enough to full-fill 64KB buffer
> requirement of SPI driver. So break down u-boot read operation at 8KB of chunk.
> 
> Also, fix a warning i.e. "unused variable buf" during CONFIG_FSL_CORENET
> 
> Signed-off-by: Prabhakar Kushwaha <prabhakar at freescale.com>
> ---
>  drivers/mtd/spi/fsl_espi_spl.c |   15 ++++++++++++---
>  1 file changed, 12 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/mtd/spi/fsl_espi_spl.c b/drivers/mtd/spi/fsl_espi_spl.c
> index e5ac79b..a55d741 100644
> --- a/drivers/mtd/spi/fsl_espi_spl.c
> +++ b/drivers/mtd/spi/fsl_espi_spl.c
> @@ -20,8 +20,10 @@
>  void spi_boot(void)
>  {
>  	void (*uboot)(void) __noreturn;
> -	u32 offset, code_len;
> +	u32 offset, code_len, copy_len = 0;
> +#ifndef CONFIG_FSL_CORENET
>  	unsigned char *buf = NULL;
> +#endif
>  	struct spi_flash *flash;
>  
>  	flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
> @@ -56,8 +58,15 @@ void spi_boot(void)
>  	code_len = code_len - CONFIG_SPL_MAX_SIZE;
>  #endif
>  	/* copy code to DDR */
> -	spi_flash_read(flash, offset, code_len,
> -		       (void *)CONFIG_SYS_SPI_FLASH_U_BOOT_DST);
> +	printf("Loading second stage boot loader ");
> +	while (copy_len <= code_len) {
> +		spi_flash_read(flash, offset + copy_len, 0x2000,
> +			       (void *)(CONFIG_SYS_SPI_FLASH_U_BOOT_DST
> +			       + copy_len));
> +		copy_len = copy_len + 0x2000;
> +		putc('.');
> +	}

How long does this take?  If it's long enough to warrant a progress
meter, that ought to be fixed first.

-Scott




More information about the U-Boot mailing list