[flashrom] [PATCH] Reenable forced read (stefanct's version)
Stefan Tauner
stefan.tauner at student.tuwien.ac.at
Thu Feb 16 20:08:13 CET 2012
what about something like this?
single loop, more obvious(?) execution flow
printf is misaligned, but you get the idea.
Signed-off-by: Stefan Tauner <stefan.tauner at student.tuwien.ac.at>
---
cli_classic.c | 19 ++++++++++++++++---
1 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/cli_classic.c b/cli_classic.c
index 7661612..df1f668 100644
--- a/cli_classic.c
+++ b/cli_classic.c
@@ -456,11 +456,25 @@ int main(int argc, char *argv[])
printf("Note: flashrom can never write if the flash "
"chip isn't found automatically.\n");
}
-#if 0 // FIXME: What happens for a forced chip read if multiple compatible programmers are registered?
if (force && read_it && chip_to_probe) {
+ struct registered_programmer *pgm;
+ struct registered_programmer *first_pgm = NULL;
printf("Force read (-f -r -c) requested, pretending "
"the chip is there:\n");
- startchip = probe_flash(0, &flashes[0], 1);
+ for (j = 0; j < registered_programmer_count; j++) {
+ pgm = ®istered_programmers[j];
+ if (pgm->buses_supported & flashes[0].bustype) {
+ if (first_pgm == NULL)
+ first_pgm = pgm;
+ else {
+ printf("More than one compatible controller "
+ "found for the requested flash chip, "
+ "using the first one.\n");
+ break;
+ }
+ }
+ }
+ startchip = probe_flash(first_pgm, 0, &flashes[0], 1);
if (startchip == -1) {
printf("Probing for flash chip '%s' failed.\n",
chip_to_probe);
@@ -471,7 +485,6 @@ int main(int argc, char *argv[])
"contain garbage.\n");
return read_flash_to_file(&flashes[0], filename);
}
-#endif
ret = 1;
goto out_shutdown;
} else if (!chip_to_probe) {
--
1.7.1
More information about the flashrom
mailing list