
On 7/3/07, eran.liberty@gmail.com eran.liberty@gmail.com wrote:
this fix a possible bug which occur when the config file defines a flash which is actually smaller than the physical one. on top of that, if you want to force your flash to appear smaller you can define CONFIG_FORCE_FLASH_BANK_SIZE the a corresponding value.
Signed-off-by: Eran Liberty eran.liberty@gmail.com
Index: drivers/cfi_flash.c
--- drivers/cfi_flash.c (.../tags/trunk/20070620_2_merge_to_exsw6000) (revision 69) +++ drivers/cfi_flash.c (.../branches/exsw6000) (revision 69) @@ -1281,7 +1281,9 @@ erase_region_count = (tmp & 0xffff) + 1; debug ("erase_region_count = %d erase_region_size = %d\n", erase_region_count, erase_region_size);
for (j = 0; j < erase_region_count; j++) {
for (j = 0;
j < erase_region_count
&& sect_cnt < CFG_MAX_FLASH_SECT; j++) { info->start[sect_cnt] = sector; sector += (erase_region_size * size_ratio);
Nit: rather than adding a test in the for loop, can you modify erase_region_count before the loop to reflect the maximum size? I think it will result in cleaner code.
ie: if (erase_region_count > CFG_MAX_FLASH_SECT - sect_cnt) erase_region_count = CFG_MAX_FLASH_SECT - sect_cnt; (but double check that I haven't created an off-by-one error)
Cheers, g.