On 02/08/11 10:19, Wolfgang Denk wrote:
> Dear Richard Retanubun,
>
> In message<4d515d06.7020...@ruggedcom.com>  you wrote:
>>
>> If by "how NOR flash in handled" you mean cmd_flash.c::flash_sect_roundb() 
>> then yes, I do want to do this
>> but I need to know what number to round it to, no?
>
> The code needs to know that, you don't ;-)
>
>> In the context of cmd_flash, it has access to flash_info_t
>> which contains the sector_size information. Also cfi_flash.c also provides a 
>> function called flash_sector_size()
>> that is called by other components that needs to know. If I have 
>> misunderstood what you mean, sorry, please clarify.
>
> You are right.

<sensing a wavering in your resolve> ;-)

Thus we come to my original question, in the same way that cfi_flash.c provides 
flash_sector_size();

I propose we add spi_flash.c::spi_flash_sector_size() which returns the same 
information so that other code
can validate (or round up if requested) the length of the operation to the 
nearest sector size.

right now (unless I misunderstood), there is no easy way to get the spi flash 
sector_size, no?

would this be acceptable?

>
>> To have SPI flash do this, for example; stmicro.c::stmicro_erase() function 
>> will auto round up to the nearest sector_size.
>> Which is indeed the simpler way. Right now, most drivers/mtd/spi/*.c just 
>> does this check:
>>
>> <quoted_code>
>> sector_size = stm->params->page_size * stm->params->pages_per_sector;
>>
>> if (offset % sector_size || len % sector_size) {
>>      debug("SF: Erase offset/length not multiple of sector size\n");
>>      return -1;
>> }
>> </quoted_code>
>
> This is ok if an explicit size is given - you will see the same
> behaviour on NOR flash when trying something like
>
>       erase 40000000 40002345

Understood. So the spi flash driver erase function itself should only validate 
the args and not auto round up.
This means that the decision of [warn or auto-round-up] should be handled by 
other code that parses the user's commands
that is operating on spi flash.

To do this, they need a way to ask the spi flash driver what the sector size to 
round up to is.

>
>> I am worried about unintentionally erasing more than what the caller 
>> requested.
>> Would it be better to round up manually and then calls the erase?
>
> No.  If the caller uses the "+<size>" notation he explictly requests
> to round up.  He is supposed to know what he is doing.
>
> Being able to use "+${filesize}" allows for many powerful solutions
> to standard tasks that without this would result in cumbersome
> manipulation of the size - which would then probably break if you
> issue a new revision of your hardware with different flash chips fit.

This is a cool convention. Should we add this to "sf erase command?" if it is 
not there already.
if so, what command (or better yet, git commit) shows how to add handling of 
"+N"

Thanks!

- Richard

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to