Edward O'Callaghan has submitted this change. ( https://review.coreboot.org/c/flashrom/+/35591 )
Change subject: cli_classic: Add convenient '--flash-name' cli opt ......................................................................
cli_classic: Add convenient '--flash-name' cli opt
We have this in the ChromiumOS fork of flashrom which we rely on to obtain the current flash chip in use. This ports it for upstream consumption.
V.2: Constrain number_of_operations to one as per Nico's comment. V.3: Move two goto's outside inner if-else block. V.4: Add missing --help line. V.5: Add man page entry. v.6: Use printf() directly.
Change-Id: I23d574a2f8eaf809a5c0524490db9e3a560ede56 Signed-off-by: Edward O'Callaghan quasisec@chromium.org Reviewed-on: https://review.coreboot.org/c/flashrom/+/35591 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Nico Huber nico.h@gmx.de --- M cli_classic.c M flashrom.8.tmpl 2 files changed, 35 insertions(+), 5 deletions(-)
Approvals: build bot (Jenkins): Verified Nico Huber: Looks good to me, approved
diff --git a/cli_classic.c b/cli_classic.c index b4112fd..5dff904 100644 --- a/cli_classic.c +++ b/cli_classic.c @@ -51,6 +51,7 @@ " -n | --noverify don't auto-verify\n" " -N | --noverify-all verify included regions only (cf. -i)\n" " -l | --layout <layoutfile> read ROM layout from <layoutfile>\n" + " --flash-name read out the detected flash name\n" " --fmap read ROM layout from fmap embedded in ROM\n" " --fmap-file <fmapfile> read ROM layout from fmap in <fmapfile>\n" " --ifd read layout from an Intel Firmware Descriptor\n" @@ -101,6 +102,7 @@ #if CONFIG_PRINT_WIKI == 1 int list_supported_wiki = 0; #endif + int flash_name = 0; int read_it = 0, write_it = 0, erase_it = 0, verify_it = 0; int dont_verify_it = 0, dont_verify_all = 0, list_supported = 0, operation_specified = 0; struct flashrom_layout *layout = NULL; @@ -110,6 +112,7 @@ OPTION_FMAP, OPTION_FMAP_FILE, OPTION_FLASH_CONTENTS, + OPTION_FLASH_NAME, }; int ret = 0;
@@ -130,6 +133,7 @@ {"fmap-file", 1, NULL, OPTION_FMAP_FILE}, {"image", 1, NULL, 'i'}, {"flash-contents", 1, NULL, OPTION_FLASH_CONTENTS}, + {"flash-name", 0, NULL, OPTION_FLASH_NAME}, {"list-supported", 0, NULL, 'L'}, {"list-supported-wiki", 0, NULL, 'z'}, {"programmer", 1, NULL, 'p'}, @@ -296,6 +300,14 @@ case OPTION_FLASH_CONTENTS: referencefile = strdup(optarg); break; + case OPTION_FLASH_NAME: + if (++operation_specified > 1) { + fprintf(stderr, "More than one operation " + "specified. Aborting.\n"); + cli_classic_abort_usage(); + } + flash_name = 1; + break; case 'L': if (++operation_specified > 1) { fprintf(stderr, "More than one operation " @@ -602,11 +614,22 @@ goto out_shutdown; }
- if (!(read_it | write_it | verify_it | erase_it)) { + if (!(read_it | write_it | verify_it | erase_it | flash_name)) { msg_ginfo("No operations were specified.\n"); goto out_shutdown; }
+ if (flash_name) { + if (fill_flash->chip->vendor && fill_flash->chip->name) { + printf("vendor="%s" name="%s"\n", + fill_flash->chip->vendor, + fill_flash->chip->name); + } else { + ret = -1; + } + goto out_shutdown; + } + if (layoutfile) { layout = get_global_layout(); } else if (ifd && (flashrom_layout_read_from_ifd(&layout, fill_flash, NULL, 0) || diff --git a/flashrom.8.tmpl b/flashrom.8.tmpl index 30dc97d..7002c72 100644 --- a/flashrom.8.tmpl +++ b/flashrom.8.tmpl @@ -44,10 +44,12 @@ .SH NAME flashrom - detect, read, write, verify and erase flash chips .SH SYNOPSIS -.B flashrom \fR[\fB-h\fR|\fB-R\fR|\fB-L\fR|\fB-z\fR|\fB-p\fR <programmername>[:<parameters>] - [\fB-E\fR|\fB-r\fR <file>|\fB-w\fR <file>|\fB-v\fR <file>] [\fB-c\fR <chipname>] - [(\fB-l\fR <file>|\fB--ifd|\fB --fmap\fR|\fB--fmap-file\fR <file>) [\fB-i\fR <image>]] - [\fB-n\fR] [\fB-N\fR] [\fB-f\fR]] +.B flashrom \fR[\fB-h\fR|\fB-R\fR|\fB-L\fR|\fB-z\fR| + \fB-p\fR <programmername>[:<parameters>] [\fB-c\fR <chipname>] + (\fB--flash-name\fR| + [\fB-E\fR|\fB-r\fR <file>|\fB-w\fR <file>|\fB-v\fR <file>] + [(\fB-l\fR <file>|\fB--ifd|\fB --fmap\fR|\fB--fmap-file\fR <file>) [\fB-i\fR <image>]] + [\fB-n\fR] [\fB-N\fR] [\fB-f\fR])] [\fB-V\fR[\fBV\fR[\fBV\fR]]] [\fB-o\fR <logfile>] .SH DESCRIPTION .B flashrom @@ -242,6 +244,9 @@ .B <imagename> from flash layout. .TP +.B "--flash-name" +Prints out the detected flash chips name. +.TP .B "-L, --list-supported" List the flash chips, chipsets, mainboards, and external programmers (including PCI, USB, parallel port, and serial port based devices) @@ -1335,6 +1340,8 @@ .br Dominik Geyer .br +Edward O'Callaghan +.br Eric Biederman .br Giampiero Giancipoli