diff options
author | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2010-10-08 18:52:29 +0000 |
---|---|---|
committer | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2010-10-08 18:52:29 +0000 |
commit | 6be0d3c5314f473915b5ee86a8d3fe57044761f0 (patch) | |
tree | 957964a468245432abbd23cd06839898b64105ce /m29f400bt.c | |
parent | ab646413b5dfa6cd7acacdfa5fce50c66df12869 (diff) | |
download | flashrom-6be0d3c5314f473915b5ee86a8d3fe57044761f0.zip flashrom-6be0d3c5314f473915b5ee86a8d3fe57044761f0.tar.gz |
Flashrom had an implicit erase-on-write for most flash chip and programmer drivers, but it was not entirely consistent
Some drivers had their own hand-rolled partial update functionality which made
handling partial updates from generic code impossible. Move implicit erase
out of chip drivers, and kill some dead erase functions at the same time.
A full chip erase is now performed in the generic code for all flash chips
on write, and after that the whole chip is written.
Corresponding to flashrom svn r1206.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
Diffstat (limited to 'm29f400bt.c')
-rw-r--r-- | m29f400bt.c | 21 |
1 files changed, 0 insertions, 21 deletions
diff --git a/m29f400bt.c b/m29f400bt.c index 2a770ba..b6a3249 100644 --- a/m29f400bt.c +++ b/m29f400bt.c @@ -143,7 +143,6 @@ int write_m29f400bt(struct flashchip *flash, uint8_t *buf) int page_size = flash->page_size; chipaddr bios = flash->virtual_memory; - //erase_m29f400bt (flash); msg_cinfo("Programming page:\n "); /********************************* *Pages for M29F400BT: @@ -163,41 +162,21 @@ int write_m29f400bt(struct flashchip *flash, uint8_t *buf) msg_cinfo("total_size/page_size = %d\n", total_size / page_size); for (i = 0; i < (total_size / page_size) - 1; i++) { msg_cinfo("%04d at address: 0x%08x\n", i, i * page_size); - if (block_erase_m29f400bt(flash, i * page_size, page_size)) { - msg_cerr("ERASE FAILED!\n"); - return -1; - } write_page_m29f400bt(bios, buf + i * page_size, bios + i * page_size, page_size); msg_cinfo("\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"); } msg_cinfo("%04d at address: 0x%08x\n", 7, 0x70000); - if (block_erase_m29f400bt(flash, 0x70000, 32 * 1024)) { - msg_cerr("ERASE FAILED!\n"); - return -1; - } write_page_m29f400bt(bios, buf + 0x70000, bios + 0x70000, 32 * 1024); msg_cinfo("%04d at address: 0x%08x\n", 8, 0x78000); - if (block_erase_m29f400bt(flash, 0x78000, 8 * 1024)) { - msg_cerr("ERASE FAILED!\n"); - return -1; - } write_page_m29f400bt(bios, buf + 0x78000, bios + 0x78000, 8 * 1024); msg_cinfo("%04d at address: 0x%08x\n", 9, 0x7a000); - if (block_erase_m29f400bt(flash, 0x7a000, 8 * 1024)) { - msg_cerr("ERASE FAILED!\n"); - return -1; - } write_page_m29f400bt(bios, buf + 0x7a000, bios + 0x7a000, 8 * 1024); msg_cinfo("%04d at address: 0x%08x\n", 10, 0x7c000); - if (block_erase_m29f400bt(flash, 0x7c000, 16 * 1024)) { - msg_cerr("ERASE FAILED!\n"); - return -1; - } write_page_m29f400bt(bios, buf + 0x7c000, bios + 0x7c000, 16 * 1024); msg_cinfo("\n"); |