diff options
author | hailfinger <hailfinger@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1> | 2009-06-25 13:57:31 +0000 |
---|---|---|
committer | hailfinger <hailfinger@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1> | 2009-06-25 13:57:31 +0000 |
commit | c548a57b09d17353d054b1353a1aaa820511a1a1 (patch) | |
tree | 47478bc812481cc67f0c1d85a932a1f3fae47c1a /jedec.c | |
parent | 0c49bb6a1a4c387c0c2ccd4f0709da4ab1c63c4f (diff) | |
download | flashrom-c548a57b09d17353d054b1353a1aaa820511a1a1.tar.gz |
Change chip_readb in loop to use verify_range in
write_page_write_jedec (jedec.c).
Tested by Urja Rannikko with external flasher.
Tested by Uwe Hermann with onboard flash.
Signed-off-by: Urja Rannikko <urjaman@gmail.com>
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Urja Rannikko <urjaman@gmail.com>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@632 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'jedec.c')
-rw-r--r-- | jedec.c | 22 |
1 files changed, 8 insertions, 14 deletions
@@ -262,12 +262,14 @@ int erase_chip_jedec(struct flashchip *flash) return 0; } -int write_page_write_jedec(chipaddr bios, uint8_t *src, - chipaddr dst, int page_size) +int write_page_write_jedec(struct flashchip *flash, uint8_t *src, + int start, int page_size) { int i, tried = 0, start_index = 0, ok; - chipaddr d = dst; uint8_t *s = src; + chipaddr bios = flash->virtual_memory; + chipaddr dst = bios + start; + chipaddr d = dst; retry: /* Issue JEDEC Data Unprotect comand */ @@ -288,15 +290,7 @@ retry: dst = d; src = s; - ok = 1; - for (i = 0; i < page_size; i++) { - if (chip_readb(dst) != *src) { - ok = 0; - break; - } - dst++; - src++; - } + ok = !verify_range(flash, src, start, page_size, NULL); if (!ok && tried++ < MAX_REFLASH_TRIES) { start_index = i; @@ -367,8 +361,8 @@ int write_jedec(struct flashchip *flash, uint8_t *buf) printf("Programming page: "); for (i = 0; i < total_size / page_size; i++) { printf("%04d at address: 0x%08x", i, i * page_size); - write_page_write_jedec(bios, buf + i * page_size, - bios + i * page_size, page_size); + write_page_write_jedec(flash, buf + i * page_size, + i * page_size, page_size); printf("\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"); } printf("\n"); |