diff options
Diffstat (limited to 'util/flash_and_burn/flash_rom.c')
-rw-r--r-- | util/flash_and_burn/flash_rom.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/util/flash_and_burn/flash_rom.c b/util/flash_and_burn/flash_rom.c index bf338ccb3c..35a9f50984 100644 --- a/util/flash_and_burn/flash_rom.c +++ b/util/flash_and_burn/flash_rom.c @@ -194,7 +194,8 @@ int main(int argc, char *argv[]) FILE *image; struct flashchip *flash; int opt; - int read_it = 0, write_it = 0, verify_it = 0, verbose = 0; + int read_it = 0, write_it = 0, erase_it = 0, verify_it = 0, + verbose = 0; char *filename = NULL; @@ -211,7 +212,7 @@ int main(int argc, char *argv[]) setbuf(stdout, NULL); - while ((opt = getopt(argc, argv, "rwvVc:s:e:")) != EOF) { + while ((opt = getopt(argc, argv, "rwvVEc:s:e:")) != EOF) { switch (opt) { case 'r': read_it = 1; @@ -228,6 +229,9 @@ int main(int argc, char *argv[]) case 'V': verbose = 1; break; + case 'E': + erase_it = 1; + break; case 's': tempstr = strdup(optarg); sscanf(tempstr,"%x",&exclude_start_position); @@ -266,14 +270,18 @@ int main(int argc, char *argv[]) } printf("Part is %s\n", flash->name); - if (!filename) { + if (!filename && !erase_it) { printf("OK, only ENABLING flash write, but NOT FLASHING\n"); return 0; } size = flash->total_size * 1024; buf = (char *) calloc(size, sizeof(char)); - if (read_it) { + if (erase_it) { + printf("Erasing flash chip\n"); + flash->erase(flash); + exit(0); + } else if (read_it) { if ((image = fopen(filename, "w")) == NULL) { perror(filename); exit(1); |