Problem with flash cfi legacy mode
Hi,
Im working on adding support for our board to u-boot.
I use legacy flash mode for our boot-flash. I however have some problems with it.
When using jedec probe to identify our flash. Im unable to do so with our 16bit device-id. In my opinion it seems like this actually wont work(?)
cmdset_amd_read_jedec_ids uses _one_ flash_read_uchar call to read out the device id(, if its not an amd extended one). The only way i could get this to work with our flash was to only put the lower 8bit in the dev_id field when adding an entry to the jedec_table.
Further on it seems like CFI_CMDSET_AMD_LEGACY is unsupported in flash_write_cfibuffer.
/Tor
Quoted 5 lines · Tor Krill
Im working on adding support for our board to u-boot.
I use legacy flash mode for our boot-flash. I however have some problems with it.
Quoted 8 lines
When using jedec probe to identify our flash. Im unable to do so with our 16bit device-id. In my opinion it seems like this actually wont work(?)
cmdset_amd_read_jedec_idsuses _one_flash_read_ucharcall to read out the deviceid(, if its not an amd extended one). The only way i could get this to work with our flash was to only put the lower 8bit in thedev_idfield when adding an entry to thejedec_table.
Hm - right. You are probably the first one to use that code on a 16-bit non-CFI flash - for 16-bit flashs, the read will need to be changed, but I am not sure how exactly - I think we may need separate code depending on info->chipwidth, because 8-bit flashs only have an 8-bit ID.
Quoted 3 lines
Further on it seems like
CFI_CMDSET_AMD_LEGACYis unsupported inflash_write_cfibuffer.
Right. Setting info->buffer_size = 1 in jedec_flash.c/fill_info() should make sure that part of code is never executed.
cu
Michael
Quoted 14 lines · Michael Schwingen
Quoted 5 lines · Tor Krill
Im working on adding support for our board to u-boot.
I use legacy flash mode for our boot-flash. I however have some problems with it.
Quoted 8 lines
When using jedec probe to identify our flash. Im unable to do so with our 16bit device-id. In my opinion it seems like this actually wont work(?)
cmdset_amd_read_jedec_idsuses _one_flash_read_ucharcall to read out the deviceid(, if its not an amd extended one). The only way i could get this to work with our flash was to only put the lower 8bit in thedev_idfield when adding an entry to thejedec_table.
Quoted 4 lines
Hm - right. You are probably the first one to use that code on a 16-bit non-CFI flash - for 16-bit flashs, the read will need to be changed, but I am not sure how exactly - I think we may need separate code depending on
info->chipwidth, because 8-bit flashs only have an 8-bit ID.
Can one asume that a chip with chipwidht 16 always has an ID of 16bit? And how does AMD expanded 3byte id mode fit? If its safe to just change
the read it should be trivial to fix(?)
Quoted 5 lines
Quoted 3 lines
Further on it seems like
CFI_CMDSET_AMD_LEGACYis unsupported inflash_write_cfibuffer.Right. Setting
info->buffer_size= 1 in jedec_flash.c/fill_info() should make sure that part of code is never executed.
Ok, i just skipped CFG_FLASH_USE_BUFFER_WRITE instead. That solved it for me.
/Tor
Quoted 10 lines · Tor Krill
Quoted 5 lines
Hm - right. You are probably the first one to use that code on a 16-bit non-CFI flash - for 16-bit flashs, the read will need to be changed, but I am not sure how exactly - I think we may need separate code depending on
info->chipwidth, because 8-bit flashs only have an 8-bit ID.Can one asume that a chip with chipwidht 16 always has an ID of 16bit? And how does AMD expanded 3byte id mode fit? If its safe to just change
the read it should be trivial to fix(?)
I think it should be OK to use 16-bit reads if info->chipwidth==2.
cu
Michael