mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-27 23:22:37 +02:00
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. Corresponding to flashrom svn r632. 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>
This commit is contained in:
parent
ea07f6245c
commit
0c854c0509
22
jedec.c
22
jedec.c
@ -262,12 +262,14 @@ int erase_chip_jedec(struct flashchip *flash)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int write_page_write_jedec(chipaddr bios, uint8_t *src,
|
int write_page_write_jedec(struct flashchip *flash, uint8_t *src,
|
||||||
chipaddr dst, int page_size)
|
int start, int page_size)
|
||||||
{
|
{
|
||||||
int i, tried = 0, start_index = 0, ok;
|
int i, tried = 0, start_index = 0, ok;
|
||||||
chipaddr d = dst;
|
|
||||||
uint8_t *s = src;
|
uint8_t *s = src;
|
||||||
|
chipaddr bios = flash->virtual_memory;
|
||||||
|
chipaddr dst = bios + start;
|
||||||
|
chipaddr d = dst;
|
||||||
|
|
||||||
retry:
|
retry:
|
||||||
/* Issue JEDEC Data Unprotect comand */
|
/* Issue JEDEC Data Unprotect comand */
|
||||||
@ -288,15 +290,7 @@ retry:
|
|||||||
|
|
||||||
dst = d;
|
dst = d;
|
||||||
src = s;
|
src = s;
|
||||||
ok = 1;
|
ok = !verify_range(flash, src, start, page_size, NULL);
|
||||||
for (i = 0; i < page_size; i++) {
|
|
||||||
if (chip_readb(dst) != *src) {
|
|
||||||
ok = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
dst++;
|
|
||||||
src++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ok && tried++ < MAX_REFLASH_TRIES) {
|
if (!ok && tried++ < MAX_REFLASH_TRIES) {
|
||||||
start_index = i;
|
start_index = i;
|
||||||
@ -367,8 +361,8 @@ int write_jedec(struct flashchip *flash, uint8_t *buf)
|
|||||||
printf("Programming page: ");
|
printf("Programming page: ");
|
||||||
for (i = 0; i < total_size / page_size; i++) {
|
for (i = 0; i < total_size / page_size; i++) {
|
||||||
printf("%04d at address: 0x%08x", i, i * page_size);
|
printf("%04d at address: 0x%08x", i, i * page_size);
|
||||||
write_page_write_jedec(bios, buf + i * page_size,
|
write_page_write_jedec(flash, buf + i * page_size,
|
||||||
bios + i * page_size, 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("\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");
|
printf("\n");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user