
Hello,
I have a board on which there is a NOR Flash SST39LF040.
Previously, I copied flash.c from other boards.
Now I am trying to migrate NOR Flash driver to use CFI, but it fails to program sectors which are not on the 0x10000 boundaries.
I found that in function flash_write_cfiword() @drivers/mtd/cfi_flash.c it issues command with address relative to sector address. However, according to SST39 series data sheet, it seems that we should issue command with address relative to flash base address?
After I modified flash_write_cfiword() to issue command to sector 0, everything works fine.
Is it a bug?
Index: cfi_flash.c =================================================================== RCS file: /usr/local/cvsroot/ctd/FA5A320LINUX26_u-boot/drivers/mtd/cfi_flash.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 cfi_flash.c --- cfi_flash.c 23 Mar 2009 02:54:57 -0000 1.1.1.1 +++ cfi_flash.c 24 Apr 2009 02:28:32 -0000 @@ -839,8 +839,8 @@ case CFI_CMDSET_AMD_LEGACY: #endif sect = find_sector(info, dest); - flash_unlock_seq (info, sect); - flash_write_cmd (info, sect, info->addr_unlock1, AMD_CMD_WRITE); + flash_unlock_seq (info, 0); + flash_write_cmd (info, 0, info->addr_unlock1, AMD_CMD_WRITE); sect_found = 1; break; }
regards
Po-Yu Chuang