summaryrefslogtreecommitdiffstats
path: root/m29f400bt.c
diff options
context:
space:
mode:
authorCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>2010-10-08 18:52:29 +0000
committerCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>2010-10-08 18:52:29 +0000
commitf52f784bb300ec0acbd6c6bd9e6c3e5b435c4a90 (patch)
tree957964a468245432abbd23cd06839898b64105ce /m29f400bt.c
parent92c8b0cec2ed06db9c24c4d93cf38a596edf23ab (diff)
downloadast2050-flashrom-f52f784bb300ec0acbd6c6bd9e6c3e5b435c4a90.zip
ast2050-flashrom-f52f784bb300ec0acbd6c6bd9e6c3e5b435c4a90.tar.gz
Move implicit erase out of chip drivers
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.c21
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");
OpenPOWER on IntegriCloud