[U-Boot] mtd/cfi: SST39VF3201B flash model not properly handled

Stefan Roese
2012-11-29T12:13:30Z

Hi Angelo,

On 11/29/2012 01:03 PM, Angelo Dureghello wrote:
> as Wolfgang Denx suggested me, i am trying to use the u-boot CFI driver with
> a CFI flash (SSTVF3201B).

Yes. But please take a look at the CONFIG_FLASH_CFI_LEGACY config
option. This enables the legacy CFI flash devices. And IIRC the SST
flash chips are supported via this driver/extension.

> This flash chip allows erasing/writing blocks of 4 KBytes (called "sectors"
> in the SST datasheet), or 64 KBytes (called "blocks").
>
> The command sequence table for this flash shows 2 different commands to
> operate on these 2 kind of blocks. 0x50 is for "sector erase" and "0x30" (the
> command used from u-boot CFI driver as AMD_CMD_ERASE_SECTOR) is for the
> 64KB "block" erase.
>
> The issue:
> now, u-boot CFI driver works fine on 64KB boundary ranges, but if i expect
> to erase a 4KB sector size i get a full 64KB block erased.
>
> Proposed solution:
> Initially, a single sector size definition would be good enough for this chip,
> so the user should specify if he wants a 64 or 4 KB sector to be used, using
> some CFG_X.
> CFI driver, through queries, should be able to identify this particular chip
> so that it can be handled in a specific way from the CFI driver (cmd 0x50 for
> 4KB secotrs, or 0x30 for 64KB secotrs).
>
> I am thinking about to post a patch on this.
> Anyway, until new AMCORE board patch is not accepted, there is the chance
> this can result as a "dead code" if no-one use this flash chip except me.
>
> So, before i start, please let me know how to proceed, maybe is better to use
> a specific flash.c for my board for now ?
> Or if you think a patch can be useful, any suggestion on how to implement it
> is really welcome.

Please see my comment above. And grep for CONFIG_FLASH_CFI_LEGACY to see
how its used in the config header. And if necessary, you can always
extend the CFI configuration in the JEDEC source:

drivers/mtd/jedec_flash.c

Thanks,
Stefan