[U-Boot] Breakage on arm/next

Scott Wood scottwood at freescale.com
Thu Dec 10 18:17:14 CET 2009


apgmoorthy wrote:
> Hi Scott, 
> 
>>> Hunk 1:
>>>            env_addr = CONFIG_ENV_ADDR;
>>>    +       if (FLEXONENAND(this))
>>>    +               env_addr <<= 1;
>>>
>>> Hunk 2:
>>> +       if (FLEXONENAND(this)) {
>>> +               env_addr <<= 1;
>>> +               instr.len <<= 
>> onenand_mtd.eraseregions[0].numblocks == 1 ?
>>> +                               2 : 1;
>>> +       }
>>>
>>> This should not break any other Board with OneNAND support. 
>> Please comment.
>>> (Somehow I still feel Macros can be Cleaner way.)
>> Why is the address automatically doubled on flex?  I think 
>> this really needs to be something board-specified.
>>
> Please excuse me for the Delay.
> 
> Flex-OneNAND device's erasesize itself is double considered to OneNAND.

That doesn't mean that all data you're storing is double the size.  A 
board may want to keep the byte offset the same, and let the block 
number change.

> Like , In SLC region of Flex-OneNAND size is 256K and 
> in MLC region it is 512K. In case of OneNAND erasesize is 128K and 
> it is just SLC.

Suppose I have a 256K U-Boot.  I want CONFIG_ENV_ADDR to be 256K 
regardless, which would be block 1 for flex SLC or block 2 for regular 
OneNAND.

If I have a 512K U-Boot, then the byte offset would be the same for MLC 
as well.

-Scott


More information about the U-Boot mailing list