On 02/08/11 09:40, Wolfgang Denk wrote:

Thanks for the speedy response Wolfgang,

> Dear Richard Retanubun,
>
> In message<4d514f6e.6040...@ruggedcom.com>  you wrote:
>>
>> When calling spi_flash_erase, which eventually calls stmicro_erase, one must 
>> do so while knowing
>> what the sector_size is of the flash. Is there a recommened API to getting 
>> this from struct stmicro_spi_flash_params?
>
> Why would you need to know the sector size?
>
> To align your erase command accordingly?
Yep.

I think you are taking the wrong approach here.  Look at how NOR flash is 
handled: we don't need
> to know the sector sizes there either.  Instead we support the format
> "+N" (often used as "+${fileszize}") which will _internally_ round up
> N to match the next erase block boundary.
>
> Do the same for SPI flash.

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?

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.


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>

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?

Thanks for your time

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

Reply via email to