
Hi all,
I'm trying to get flash programming to work in the u-boot monitor on our custom boards. Reading the flash (i.e, booting :-) works, and once in Linux the flash can be programmed too using mtd-tools.
But when I try to erase in u-boot, I get erase errors:
Flash erase error at address ffd80000 Block Erase Error.
(a more detailed log is included below).
I use U-Boot 1.2.0 and the standard CFI driver with buffered writes.
This is what flinfo and Linux MTD report:
Bank # 1: CFI conformant FLASH (32 x 16) Size: 64 MB in 259 Sectors Intel Extended command set, Manufacturer ID: 0x89, Device ID: 0x19 Erase timeout: 4096 ms, write timeout: 1 ms Buffer write timeout: 2 ms, buffer size: 64 bytes
physmap platform flash device: 04000000 at fc000000 physmap-flash.0: Found 2 x16 devices at 0x0 in 32-bit bank
[We use two Intel P30 StrataFlash chips of 256Mbit in parallel (2 x16-bit words make a 32-bit bank), for a total of 64 MB].
All reported parameters look OK to me (port width, chip width, size, #sectors, ...)
I've noticed that for these 28F256P30 flash chips, there has been a patch in the past which corrected the manufacturer, but that doesn't seem relevant for the CFI driver. (http://permalink.gmane.org/gmane.comp.boot-loaders.u-boot/28709)
FYI, I checked the value of flash_info_t->interface, and it's detected as FLASH_CFI_X16.
Is there something specific that I need to configure? All I'm using right now is CFG_FLASH_CFI CFG_FLASH_CFI_DRIVER CFG_FLASH_USER_BUFFER_WRITE CFG_FLASH_EMPTY_INFO
(Disabling buffered write does not solve the issue.)
Please let me know if you have any suggestions.
regards Floris
----
Here are the longer logs:
=> flinfo
Bank # 1: CFI conformant FLASH (32 x 16) Size: 64 MB in 259 Sectors Intel Extended command set, Manufacturer ID: 0x89, Device ID: 0x19 Erase timeout: 4096 ms, write timeout: 1 ms Buffer write timeout: 2 ms, buffer size: 64 bytes
Sector Start Addresses: FC000000 RO FC040000 RO FC080000 RO FC0C0000 RO FC100000 RO (...) FFD40000 RO FFD80000 RO FFDC0000 RO FFE00000 RO FFE40000 E RO FFE80000 E RO FFEC0000 E RO FFF00000 RO FFF40000 E RO FFF80000 E RO FFFC0000 E RO FFFD0000 E RO FFFE0000 E RO FFFF0000 RO
=> protect off ffd80000 ffdbffff
Un-Protected 1 sectors
=> erase ffd80000 ffdbffff
Flash erase error at address ffd80000 Block Erase Error. Block locked. done Erased 1 sectors
=> protect on ffd80000 ffdbffff
Protected 1 sectors
=> flinfo
Bank # 1: CFI conformant FLASH (32 x 16) Size: 64 MB in 259 Sectors Intel Extended command set, Manufacturer ID: 0x89, Device ID: 0x19 Erase timeout: 4096 ms, write timeout: 1 ms Buffer write timeout: 2 ms, buffer size: 64 bytes
Sector Start Addresses: (...) FFD40000 RO FFD80000 RO FFDC0000 RO FFE00000 RO FFE40000 E RO (...)
physmap platform flash device: 04000000 at fc000000 physmap-flash.0: Found 2 x16 devices at 0x0 in 32-bit bank Intel/Sharp Extended Query Table at 0x010A Intel/Sharp Extended Query Table at 0x010A Intel/Sharp Extended Query Table at 0x010A Intel/Sharp Extended Query Table at 0x010A Intel/Sharp Extended Query Table at 0x010A Using buffer write method cfi_cmdset_0001: Erase suspend on write enabled