[ 2806917 ] Atmel AT49BV322D flash support (MURANAKA Masaki)

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

@ -1,3 +1,9 @@
2009-07-15 Arnim Laeuger <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-06-04 Arnim Laeuger <arniml>
* src/bsdl/bsdl_flex.l: force Base = DECIMAL for BOUNDARY_LENGTH attribute

@ -310,6 +310,12 @@ amd_flash_print_info( cfi_array_t *cfi_array )
printf( "Atmel" );
printf( _("\n\tChip: ") );
switch (cid) {
case 0x01c8:
printf( "AT49BV322D" );
break;
case 0x01c9:
printf( "AT49BV322DT" );
break;
case 0x01d2:
printf( "AT49BW642DT" );
break;
@ -515,19 +521,27 @@ amd_flash_program( cfi_array_t *cfi_array, uint32_t adr, uint32_t *buffer, int c
#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;
/* 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)
return status;
adr += cfi_array->bus_width;
}
for (idx = 0; idx < count; idx++) {
int status = amd_flash_program_single( cfi_array, adr, buffer[idx] );
if (status)
return status;
adr += cfi_array->bus_width;
}
return 0;

Loading…
Cancel
Save