Hello,
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");