The following is based on work originally posted to the list by Alex Mauer in 2008, here: http://www.coreboot.org/pipermail/coreboot/2008-October/040212.html
I don't claim to really know what I'm doing ... but I've tested this on a Winnet P680 v 1.2 motherboard (in a Neoware ca22) with this flash chip on it. I read the rom, erased it, read the erased image (which appeared to be empty via od -c), wrote the original rom back, and rebooted sucessfully.
Thanks, Jim
(Note: I'm not on the list; please reply directly: jmr at c o m p u t i n g.com)
Index: flashchips.c =================================================================== --- flashchips.c (revision 1769) +++ flashchips.c (working copy) @@ -4678,6 +4678,33 @@
{ .vendor = "Eon", + .name = "EN29F040A", + .bustype = BUS_PARALLEL, + .manufacture_id = EON_ID, + .model_id = EON_EN29F040A, + .total_size = 512, + .page_size = 64 * 1024, + .feature_bits = FEATURE_ADDR_AAA | FEATURE_EITHER_RESET, + .tested = TEST_OK_PREW, + .probe = probe_jedec, + .probe_timing = TIMING_ZERO, /* datasheet specifies no timing */ + .block_erasers = + { + { + .eraseblocks = { {64 * 1024, 8} }, + .block_erase = erase_sector_jedec, + }, { + .eraseblocks = { {512 * 1024, 1} }, + .block_erase = erase_chip_block_jedec, + } + }, + .write = write_jedec_1, + .read = read_memmapped, + .voltage = {4500, 5500}, + }, + + { + .vendor = "Eon", .name = "EN29LV640B", .bustype = BUS_PARALLEL, .manufacture_id = EON_ID,