[ 2806917 ] Atmel AT49BV322D flash support (MURANAKA Masaki)

git-svn-id: https://urjtag.svn.sourceforge.net/svnroot/urjtag/trunk@1655 b68d4a1b-bc3d-0410-92ed-d4ac073336b7
master
Arnim Läuger 16 years ago
parent 4c22a4ef63
commit 8475faa1fd

@ -1,3 +1,9 @@
2009-07-15 Arnim <arniml>
* src/flash/amd.c: [ 2806917 ] Atmel AT49BV322D flash support (MURANAKA Masaki)
Work around flash chips that support multi byte write mode with a
different programming algorithm.
2009-07-10 Arnim Laeuger <arniml>
* src/tap/cable/ft2232.c: disable "Set Data bits LowByte" for

@ -345,6 +345,12 @@ amd_flash_print_info (urj_log_level_t ll, urj_flash_cfi_array_t *cfi_array)
urj_log (ll, _("\n\tChip: "));
switch (cid)
{
case 0x01c8:
urj_log (ll, "AT49BV322D");
break;
case 0x01c9:
urj_log (ll, "AT49BV322DT");
break;
case 0x01d2:
urj_log (ll, "AT49BW642DT");
break;
@ -587,21 +593,27 @@ amd_flash_program (urj_flash_cfi_array_t *cfi_array, uint32_t adr,
#endif
/* multi-byte writes supported? */
if (max_bytes_write > 1)
return amd_flash_program_buffer (cfi_array, adr, buffer, count);
if (max_bytes_write > 1) {
int result;
result = amd_flash_program_buffer (cfi_array, adr, buffer, count);
if (result == 0)
return 0;
/* Some flashes support max_bytes_write.
* But some of them don't support S29 style write buffer.
* See also the datasheet about AT49BV322D.
*/
cfi->device_geometry.max_bytes_write = 1;
}
else
/* unroll buffer to single writes */
int idx;
for (idx = 0; idx < count; idx++)
{
/* unroll buffer to single writes */
int idx;
for (idx = 0; idx < count; idx++)
{
int status = amd_flash_program_single (cfi_array, adr, buffer[idx]);
if (status != URJ_STATUS_OK)
return status;
adr += cfi_array->bus_width;
}
int status = amd_flash_program_single (cfi_array, adr, buffer[idx]);
if (status != URJ_STATUS_OK)
return status;
adr += cfi_array->bus_width;
}
return URJ_STATUS_OK;

Loading…
Cancel
Save