Hello,
Second post. The first one has not reached the mailing list for some reason.
The first patch changes chip erase method from JEDEC Chip Erase to JEDEC Sector Erase for each sector. See the comment in util/flashrom/sst49lf040.c, line #40. Verified on a real SST49LF080A chip, for which JEDEC Chip Erase did not work as well.
The second patch makes printf working [as designed ?].
Roman
Index: util/flashrom/flashchips.c =================================================================== --- util/flashrom/flashchips.c (revision 2434) +++ util/flashrom/flashchips.c (working copy) @@ -67,7 +67,7 @@ {"SST49LF040", SST_ID, SST_49LF040, NULL, 512, 4096, probe_jedec, erase_49lf040, write_49lf040,NULL}, {"SST49LF080A", SST_ID, SST_49LF080A, NULL, 1024, 4096, - probe_jedec, erase_chip_jedec, write_49lf040,NULL}, + probe_jedec, erase_49lf040, write_49lf040,NULL}, {"SST49LF002A/B", SST_ID, SST_49LF002A, NULL, 256, 16 * 1024, probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub, NULL}, {"SST49LF003A/B", SST_ID, SST_49LF003A, NULL, 384, 64 * 1024, Index: util/flashrom/sst49lf040.c =================================================================== --- util/flashrom/sst49lf040.c (revision 2434) +++ util/flashrom/sst49lf040.c (working copy) @@ -59,13 +59,11 @@ erase_sector_jedec(bios, i * page_size);
/* write to the sector */ - if((i&0xfff)==0xfff) - printf("%04d at address: 0x%08x ", i, i * page_size); + printf("%04d at address: 0x%08x ", i, i * page_size);
write_sector_jedec(bios, buf + i * page_size, bios + i * page_size, page_size); - if((i&0xfff)==0xfff) - printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"); + printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"); fflush(stdout); } printf("\n");