On 11/25/2009 4:28 AM, Carl-Daniel Hailfinger wrote:
Next try, this time with fixed error location printing.
jedec.c was missing error handling in a few cases. Fix. jedec.c error handling used double negation in too many places for no good reason. Clean up.
Signed-off-by: Carl-Daniel Hailfingerc-d.hailfinger.devel.2006@gmx.net
Index: flashrom-jedec_errorhandling/jedec.c
--- flashrom-jedec_errorhandling/jedec.c (Revision 777) +++ flashrom-jedec_errorhandling/jedec.c (Arbeitskopie) @@ -262,7 +262,7 @@ int write_page_write_jedec(struct flashchip *flash, uint8_t *src, int start, int page_size) {
- int i, tried = 0, ok;
- int i, tried = 0, failed; uint8_t *s = src; chipaddr bios = flash->virtual_memory; chipaddr dst = bios + start;
@@ -287,27 +287,27 @@
dst = d; src = s;
- ok = !verify_range(flash, src, start, page_size, NULL);
- failed = verify_range(flash, src, start, page_size, NULL);
- if (!ok&& tried++< MAX_REFLASH_TRIES) {
- if (failed&& tried++< MAX_REFLASH_TRIES) { fprintf(stderr, "retrying.\n"); goto retry; }
- if (!ok) {
- if (failed) { fprintf(stderr, " page 0x%lx failed!\n", (d - bios) / page_size); }
- return !ok;
return failed; }
int write_byte_program_jedec(chipaddr bios, uint8_t *src, chipaddr dst) {
- int tried = 0, ok = 1;
- int tried = 0, failed = 0;
- /* If the data is 0xFF, don't program it */
- /* If the data is 0xFF, don't program it and don't complain. */ if (*src == 0xFF) {
return -1;
return 0;
}
retry:
@@ -325,27 +325,32 @@ }
if (tried>= MAX_REFLASH_TRIES)
ok = 0;
failed = 1;
- return !ok;
return failed; }
int write_sector_jedec(chipaddr bios, uint8_t *src, chipaddr dst, unsigned int page_size) {
- int i;
int i, failed = 0;
chipaddr olddst;
olddst = dst; for (i = 0; i< page_size; i++) {
write_byte_program_jedec(bios, src, dst);
if (write_byte_program_jedec(bios, src, dst))
dst++, src++; }failed = 1;
- if (failed)
fprintf(stderr, " writing sector at 0x%lx failed!\n", olddst);
- return 0;
return failed; }
int write_jedec(struct flashchip *flash, uint8_t *buf) {
- int i;
- int i, failed = 0; int total_size = flash->total_size * 1024; int page_size = flash->page_size; chipaddr bios = flash->virtual_memory;
@@ -358,12 +363,13 @@ 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(flash, buf + i * page_size,
i * page_size, page_size);
if (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"); protect_jedec(bios);failed = 1;
- return 0;
- return failed; }
Acked-by: Sean Nelson audiohacked@gmail.com