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 /82802ab.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 '82802ab.c')
-rw-r--r-- | 82802ab.c | 22 |
1 files changed, 0 insertions, 22 deletions
@@ -144,23 +144,6 @@ int erase_block_82802ab(struct flashchip *flash, unsigned int page, unsigned int return 0; } -int erase_82802ab(struct flashchip *flash) -{ - int i; - unsigned int total_size = flash->total_size * 1024; - - msg_cspew("total_size is %d; flash->page_size is %d\n", - total_size, flash->page_size); - for (i = 0; i < total_size; i += flash->page_size) - if (erase_block_82802ab(flash, i, flash->page_size)) { - msg_cerr("ERASE FAILED!\n"); - return -1; - } - msg_cinfo("DONE ERASE\n"); - - return 0; -} - void write_page_82802ab(chipaddr bios, uint8_t *src, chipaddr dst, int page_size) { @@ -179,11 +162,6 @@ int write_82802ab(struct flashchip *flash, uint8_t *buf) int i; chipaddr bios = flash->virtual_memory; - if (erase_flash(flash)) { - msg_cerr("ERASE FAILED!\n"); - return -1; - } - msg_cinfo("Programming at: "); for (i = 0; i < flash->total_size; i++) { if ((i & 0x3) == 0) |