Always verify write operations automatically
Should this be undesireable because of speed reasons, --noverify can be
used to suppress an auto-verify.
Corresponding to flashrom svn r631.
Signed-off-by: Uwe Hermann <uwe@hermann-uwe.de>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Harald Gutmann <harald.gutmann@gmx.net>
diff --git a/flashrom.8 b/flashrom.8
index 423ee29..3dd76f7 100644
--- a/flashrom.8
+++ b/flashrom.8
@@ -2,9 +2,8 @@
.SH NAME
flashrom \- detect, read, write, verify and erase flash chips
.SH SYNOPSIS
-.B flashrom \fR[\fB\-VfLzhR\fR] [\fB\-E\fR|\fB\-r\fR file|\fB\-w\fR file|\fB\-v\fR file]
- [\fB\-c\fR chipname] [\fB\-m\fR [vendor:]part]
- [\fB\-l\fR file] [\fB\-i\fR image] [\fB\-p\fR programmer]
+.B flashrom \fR[\fB\-VfLzhRn\fR] [\fB\-E\fR|\fB\-r\fR file|\fB\-w\fR file|\fB\-v\fR file] [\fB\-c\fR chipname]
+ [\fB\-m\fR [vendor:]part] [\fB\-l\fR file] [\fB\-i\fR image] [\fB\-p\fR programmer]
.SH DESCRIPTION
.B flashrom
is a utility for detecting, reading, writing, verifying and erasing flash
@@ -38,6 +37,21 @@
.B <file>
is specified).
.TP
+.B "\-n, \-\-noverify"
+Do
+.B not
+verify the flash ROM contents after writing them to the chip. Using this
+option is
+.B not
+recommended, you should only use it if you know what you are doing and you
+feel that the time for verification takes too long.
+.sp
+Typical usage is:
+.B "flashrom -wn file"
+.sp
+This option is only useful in combination with
+.BR \-\-write .
+.TP
.B "\-v, \-\-verify <file>"
Verify the flash ROM contents against the given
.BR <file> .
diff --git a/flashrom.c b/flashrom.c
index 97b086f..7bc9b71 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -480,6 +480,7 @@
(" -r | --read: read flash and save into file\n"
" -w | --write: write file into flash\n"
" -v | --verify: verify flash against file\n"
+ " -n | --noverify: don't verify flash against file\n"
" -E | --erase: erase flash device\n"
" -V | --verbose: more verbose output\n"
" -c | --chip <chipname>: probe only for specified flash chip\n"
@@ -515,7 +516,7 @@
int option_index = 0;
int force = 0;
int read_it = 0, write_it = 0, erase_it = 0, verify_it = 0;
- int list_supported = 0, list_supported_wiki = 0;
+ int dont_verify_it = 0, list_supported = 0, list_supported_wiki = 0;
int operation_specified = 0;
int ret = 0, i;
@@ -524,6 +525,7 @@
{"write", 0, 0, 'w'},
{"erase", 0, 0, 'E'},
{"verify", 0, 0, 'v'},
+ {"noverify", 0, 0, 'n'},
{"chip", 1, 0, 'c'},
{"mainboard", 1, 0, 'm'},
{"verbose", 0, 0, 'V'},
@@ -553,7 +555,7 @@
}
setbuf(stdout, NULL);
- while ((opt = getopt_long(argc, argv, "rRwvVEfc:m:l:i:p:Lzh",
+ while ((opt = getopt_long(argc, argv, "rRwvnVEfc:m:l:i:p:Lzh",
long_options, &option_index)) != EOF) {
switch (opt) {
case 'r':
@@ -580,6 +582,9 @@
}
verify_it = 1;
break;
+ case 'n':
+ dont_verify_it = 1;
+ break;
case 'c':
chip_to_probe = strdup(optarg);
break;
@@ -779,6 +784,10 @@
exit(1);
}
+ /* Always verify write operations unless -n is used. */
+ if (write_it && !dont_verify_it)
+ verify_it = 1;
+
size = flash->total_size * 1024;
buf = (uint8_t *) calloc(size, sizeof(char));