diff options
author | Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> | 2012-10-28 01:50:08 +0000 |
---|---|---|
committer | Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> | 2012-10-28 01:50:08 +0000 |
commit | f54894ef3ebc8bae10cc840cd8d441067fa0b0ba (patch) | |
tree | eb08f0981a4a4309725c4cb480c7a53e07d7504a /flashchips.c | |
parent | 1b7c2554c9e5db15436622ef8a981e775fe2ffdd (diff) | |
download | flashrom-f54894ef3ebc8bae10cc840cd8d441067fa0b0ba.zip flashrom-f54894ef3ebc8bae10cc840cd8d441067fa0b0ba.tar.gz |
Add support for Winbond W39F010/W39L010/W39L020
W39F010 is a 128kB parallel 5V flash chip, 16k bootblocks.
W39L010 is a 128kB parallel 3.3V flash chip, 8k bootblocks.
W39L020 is a 256kB parallel 3.3V flash chip, 64k/16k bootblocks.
The W39F010 code was tested with a satasii programmer. The first write
attempt after an erase returned with verify failure, but the second
write attempt was succesful:
http://paste.flashrom.org/view.php?id=1418
Binary file (standard input) matches
Corresponding to flashrom svn r1620.
Diffstat (limited to 'flashchips.c')
-rw-r--r-- | flashchips.c | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/flashchips.c b/flashchips.c index 937abd3..66411f6 100644 --- a/flashchips.c +++ b/flashchips.c @@ -9436,6 +9436,93 @@ const struct flashchip flashchips[] = { { .vendor = "Winbond", + .name = "W39F010", + .bustype = BUS_PARALLEL, + .manufacture_id = WINBOND_ID, + .model_id = WINBOND_W39F010, + .total_size = 128, + .page_size = 4 * 1024, + .feature_bits = FEATURE_EITHER_RESET, + .tested = TEST_OK_PREW, + .probe = probe_jedec, + .probe_timing = 10, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 32} }, + .block_erase = erase_block_jedec, + }, { + .eraseblocks = { {128 * 1024, 1} }, + .block_erase = erase_chip_block_jedec, + } + }, + .printlock = printlock_w39f010, + .write = write_jedec_1, + .read = read_memmapped, + .voltage = {4500, 5500}, + }, + + { + .vendor = "Winbond", + .name = "W39L010", + .bustype = BUS_PARALLEL, + .manufacture_id = WINBOND_ID, + .model_id = WINBOND_W39L010, + .total_size = 128, + .page_size = 4 * 1024, + .feature_bits = FEATURE_EITHER_RESET, + .tested = TEST_UNTESTED, + .probe = probe_jedec, + .probe_timing = 10, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 32} }, + .block_erase = erase_block_jedec, + }, { + .eraseblocks = { {128 * 1024, 1} }, + .block_erase = erase_chip_block_jedec, + } + }, + .printlock = printlock_w39l010, + .write = write_jedec_1, + .read = read_memmapped, + .voltage = {3000, 3600}, + }, + + { + .vendor = "Winbond", + .name = "W39L020", + .bustype = BUS_PARALLEL, + .manufacture_id = WINBOND_ID, + .model_id = WINBOND_W39L020, + .total_size = 256, + .page_size = 4 * 1024, + .feature_bits = FEATURE_EITHER_RESET, + .tested = TEST_UNTESTED, + .probe = probe_jedec, + .probe_timing = 10, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 64} }, + .block_erase = erase_block_jedec, + }, { + .eraseblocks = { {64 * 1024, 4} }, + .block_erase = erase_sector_jedec, + }, { + .eraseblocks = { {256 * 1024, 1} }, + .block_erase = erase_chip_block_jedec, + } + }, + .printlock = printlock_w39l020, + .write = write_jedec_1, + .read = read_memmapped, + .voltage = {3000, 3600}, + }, + + { + .vendor = "Winbond", .name = "W39L040", .bustype = BUS_PARALLEL, .manufacture_id = WINBOND_ID, |