On 05.05.2008 18:00, Carl-Daniel Hailfinger wrote:
On 05.05.2008 17:49, Peter Stuge wrote:
Index: flashrom.multichip/flashrom.c
--- flashrom.multichip/flashrom.c (revision 3277) +++ flashrom.multichip/flashrom.c (working copy) @@ -246,11 +246,12 @@ uint8_t *buf; unsigned long size; FILE *image;
- struct flashchip *flash;
- /* Probe for up to three flash chips. */
- struct flashchip *flash, *flashes[3]; int opt; int option_index = 0; int read_it = 0, write_it = 0, erase_it = 0, verify_it = 0;
- int ret = 0;
int ret = 0, i;
static struct option long_options[] = { {"read", 0, 0, 'r'},
@@ -405,12 +406,27 @@
board_flash_enable(lb_vendor, lb_part);
- if ((flash = probe_flash(flashchips)) == NULL) {
- for (i = 0; i < ARRAY_SIZE(flashes); i++) {
flashes[i] = probe_flash(i ? flashes[i - 1] + 1 : flashchips);
if (!flashes[i])
Missing break. This loop runs ARRAY_SIZE(flashchips) times even if the first probe failed.
for (i++; i < ARRAY_SIZE(flashes); i++)
flashes[i] = NULL;
This for loop could be replaced by an early memset, making the code clearer.
}
if (flashes[1]) {
printf("Multiple flash chips were detected:");
for (i = 0; i < ARRAY_SIZE(flashes) && flashes[i]; i++)
printf(" %s", flashes[i]->name);
printf("\nPlease specify which chip to use with the -c <chipname> option.\n");
exit(1);
} else if (!flashes[0]) { printf("No EEPROM/flash device found.\n"); // FIXME: flash writes stay enabled! exit(1); }
flash = flashes[0];
printf("Flash part is %s (%d KB).\n", flash->name, flash->total_size);
Move that statement into the loop above, please.
if (TEST_OK_MASK != (flash->tested & TEST_OK_MASK)) { printf("===\n");
Otherwise, this is Acked-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Regards, Carl-Daniel