[U-Boot] [PATCH V7 4/7] spl: add NAND Library to new SPL

Simon Schwarz simonschwarzcor at googlemail.com
Tue Aug 2 10:15:20 CEST 2011


On 08/01/2011 07:58 PM, Scott Wood wrote:
> On Fri, 29 Jul 2011 18:53:38 +0200
> Simon Schwarz<simonschwarzcor at googlemail.com>  wrote:
>
>> diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile
>> index 8b598f6..fcd8b74 100644
>> --- a/drivers/mtd/nand/Makefile
>> +++ b/drivers/mtd/nand/Makefile
>> @@ -26,12 +26,18 @@ include $(TOPDIR)/config.mk
>>   LIB	:= $(obj)libnand.o
>>
>>   ifdef CONFIG_CMD_NAND
>> +ifdef CONFIG_SPL_BUILD
>> +ifdef CONFIG_OMAP34XX
>> +COBJS-y += nand_spl_simple.o
>> +endif
>> +else
>
> Please define a symbol for nand_spl_simple, and have the platform config
> file select it.
done.
>
>> +int nand_spl_load_image(loff_t offs, unsigned int size, void *dst)
>> +{
>> +	unsigned int block, lastblock;
>> +	unsigned int page;
>> +
>> +	/*
>> +	 * offs has to be aligned to a page address!
>> +	 */
>> +	block = offs / CONFIG_SYS_NAND_BLOCK_SIZE;
>> +	lastblock = (offs + size - 1) / CONFIG_SYS_NAND_BLOCK_SIZE;
>> +	page = (offs % CONFIG_SYS_NAND_BLOCK_SIZE) / CONFIG_SYS_NAND_PAGE_SIZE;
>
> Hmm, maybe it's better to leave offs as 32-bit, if we're going to be
> dividing.  The existing SPL has it as "unsigned int", and it's unlikely
> that the SPL will be loading from offsets above 4GiB.  Sorry about the back
> and forth...
hm ok.

>
>> +/* SPL interface to read a page */
>> +void nand_spl_read_page(loff_t offs, void *dst)
>> +{
>> +	int block, page;
>> +	/* calc the block */
>> +	block = offs / CONFIG_SYS_NAND_BLOCK_SIZE;
>> +	/* calc the page */
>> +	page = (offs % CONFIG_SYS_NAND_BLOCK_SIZE) / CONFIG_SYS_NAND_PAGE_SIZE;
>> +	/* read */
>> +	nand_read_page(block, page, dst);
>> +}
>
> How does this differ from nand_spl_load_image() with size ==
> CONFIG_SYS_NAND_PAGE_SIZE, other than the lack of bad block skipping?

Damn bad block skipping. right. Will change.

> -Scott
>

Regards & thanks for review!


More information about the U-Boot mailing list