diff options
author | Edward O'Callaghan <quasisec@chromium.org> | 2019-09-23 22:53:14 +1000 |
---|---|---|
committer | Edward O'Callaghan <quasisec@chromium.org> | 2019-10-04 10:45:15 +0000 |
commit | 7d6b526ef5b7b11f89eee37062e91590f5fa7f43 (patch) | |
tree | c10247a7a5f2f15f83e9f55d1a85c03edb8d682f /cli_classic.c | |
parent | 0cd11d8919c66351b9508f58ca0a7f7aaad6dd59 (diff) | |
download | flashrom-7d6b526ef5b7b11f89eee37062e91590f5fa7f43.tar.gz flashrom-7d6b526ef5b7b11f89eee37062e91590f5fa7f43.tar.bz2 flashrom-7d6b526ef5b7b11f89eee37062e91590f5fa7f43.zip |
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>
Diffstat (limited to 'cli_classic.c')
-rw-r--r-- | cli_classic.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/cli_classic.c b/cli_classic.c index 5dff904d..d23298e9 100644 --- a/cli_classic.c +++ b/cli_classic.c @@ -52,6 +52,7 @@ static void cli_classic_usage(const char *name) " -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 @@ int main(int argc, char *argv[]) #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 @@ int main(int argc, char *argv[]) OPTION_FMAP_FILE, OPTION_FLASH_CONTENTS, OPTION_FLASH_NAME, + OPTION_FLASH_SIZE, }; int ret = 0; @@ -134,6 +136,8 @@ int main(int argc, char *argv[]) {"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 @@ int main(int argc, char *argv[]) } 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 @@ int main(int argc, char *argv[]) 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 @@ int main(int argc, char *argv[]) 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) || |