Edward O'Callaghan has submitted this change. ( https://review.coreboot.org/c/flashrom/+/35592 )
Change subject: cli_classic: Add convenient '--{flash,get}-size' cli opt ......................................................................
cli_classic: Add convenient '--{flash,get}-size' 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: Rename '--get-size' to '--flash-size' however keep old arg as 'undocumented' for back-compat. V.4: Add missing --help line. V.5: Add man page entry. V.6: Use printf() directly.
Change-Id: I8f002f3b2012aec4d26b0e81456697b9a5de28d6 Signed-off-by: Edward O'Callaghan quasisec@chromium.org Reviewed-on: https://review.coreboot.org/c/flashrom/+/35592 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, 23 insertions(+), 3 deletions(-)
Approvals: build bot (Jenkins): Verified Nico Huber: Looks good to me, approved
diff --git a/cli_classic.c b/cli_classic.c index 5dff904..d23298e 100644 --- a/cli_classic.c +++ b/cli_classic.c @@ -52,6 +52,7 @@ " -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" + " --flash-size read out the detected flash size\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" @@ -102,7 +103,7 @@ #if CONFIG_PRINT_WIKI == 1 int list_supported_wiki = 0; #endif - int flash_name = 0; + int flash_name = 0, flash_size = 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; @@ -113,6 +114,7 @@ OPTION_FMAP_FILE, OPTION_FLASH_CONTENTS, OPTION_FLASH_NAME, + OPTION_FLASH_SIZE, }; int ret = 0;
@@ -134,6 +136,8 @@ {"image", 1, NULL, 'i'}, {"flash-contents", 1, NULL, OPTION_FLASH_CONTENTS}, {"flash-name", 0, NULL, OPTION_FLASH_NAME}, + {"flash-size", 0, NULL, OPTION_FLASH_SIZE}, + {"get-size", 0, NULL, OPTION_FLASH_SIZE}, // (deprecated): back compatibility. {"list-supported", 0, NULL, 'L'}, {"list-supported-wiki", 0, NULL, 'z'}, {"programmer", 1, NULL, 'p'}, @@ -308,6 +312,14 @@ } flash_name = 1; break; + case OPTION_FLASH_SIZE: + if (++operation_specified > 1) { + fprintf(stderr, "More than one operation " + "specified. Aborting.\n"); + cli_classic_abort_usage(); + } + flash_size = 1; + break; case 'L': if (++operation_specified > 1) { fprintf(stderr, "More than one operation " @@ -614,7 +626,7 @@ goto out_shutdown; }
- if (!(read_it | write_it | verify_it | erase_it | flash_name)) { + if (!(read_it | write_it | verify_it | erase_it | flash_name | flash_size)) { msg_ginfo("No operations were specified.\n"); goto out_shutdown; } @@ -630,6 +642,11 @@ goto out_shutdown; }
+ if (flash_size) { + printf("%d\n", fill_flash->chip->total_size * 1024); + 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 7002c72..eb7fdec 100644 --- a/flashrom.8.tmpl +++ b/flashrom.8.tmpl @@ -46,7 +46,7 @@ .SH SYNOPSIS .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--flash-name\fR|\fB--flash-size\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])] @@ -247,6 +247,9 @@ .B "--flash-name" Prints out the detected flash chips name. .TP +.B "--flash-size" +Prints out the detected flash chips size. +.TP .B "-L, --list-supported" List the flash chips, chipsets, mainboards, and external programmers (including PCI, USB, parallel port, and serial port based devices)