summaryrefslogtreecommitdiff
path: root/jedec.c
diff options
context:
space:
mode:
authorhailfinger <hailfinger@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2009-06-25 13:57:31 +0000
committerhailfinger <hailfinger@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2009-06-25 13:57:31 +0000
commitc548a57b09d17353d054b1353a1aaa820511a1a1 (patch)
tree47478bc812481cc67f0c1d85a932a1f3fae47c1a /jedec.c
parent0c49bb6a1a4c387c0c2ccd4f0709da4ab1c63c4f (diff)
downloadflashrom-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.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/jedec.c b/jedec.c
index 711a56d..5c71980 100644
--- a/jedec.c
+++ b/jedec.c
@@ -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");