diff options
author | Ward Vandewege <ward@gnu.org> | 2009-05-13 20:08:28 +0000 |
---|---|---|
committer | Myles Watson <mylesgw@gmail.com> | 2009-05-13 20:08:28 +0000 |
commit | a064b5239dd8cda663af5d99603ff21492ca52d7 (patch) | |
tree | c8d523b4a62afbf4f6845ed575f2ee1ca820d6bd /util | |
parent | 5eceb32a79d4298a9f57bbe9fd5e06a83db0ce95 (diff) |
Add support for human-friendly component string types for the cbfstool add
command.
Make use of it in config.g (Myles)
Signed-off-by: Ward Vandewege <ward@gnu.org>
Acked-by: Myles Watson <mylesgw@gmail.com>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4282 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'util')
-rw-r--r-- | util/cbfstool/add.c | 40 | ||||
-rw-r--r-- | util/newconfig/config.g | 2 |
2 files changed, 39 insertions, 3 deletions
diff --git a/util/cbfstool/add.c b/util/cbfstool/add.c index 83f8d29462..a62a15857b 100644 --- a/util/cbfstool/add.c +++ b/util/cbfstool/add.c @@ -219,6 +219,22 @@ void add_payload_usage(void) ("add-payload FILE NAME [OPTIONS]\tAdd a payload to the ROM\n"); } +int select_component_type(char *s) +{ + int i = 0; + char *accepted_strings[] = { + "stage", + "payload", + "optionrom", + "deleted", + "free", + }; + for (i=0; i < 5; i++) + if (!strcmp(s, accepted_strings[i])) + return i; + return -1; +} + int add_handler(struct rom *rom, int argc, char **argv) { unsigned int type = CBFS_COMPONENT_NULL; @@ -233,13 +249,33 @@ int add_handler(struct rom *rom, int argc, char **argv) return -1; } + int component_type; + /* There are two ways to specify the type - a string or a number */ if (isdigit(*(argv[2]))) type = strtoul(argv[2], 0, 0); else { - ERROR("String types (%s) aren't implemented yet.\n", argv[2]); - return -1; + switch( component_type = select_component_type(argv[2])) { + case 0: + type = CBFS_COMPONENT_STAGE; + break; + case 1: + type = CBFS_COMPONENT_PAYLOAD; + break; + case 2: + type = CBFS_COMPONENT_OPTIONROM; + break; + case 3: + type = CBFS_COMPONENT_DELETED; + break; + case 4: + type = CBFS_COMPONENT_NULL; + break; + default: + ERROR("Unrecognized component type %s.\nValid options are: stage, payload, optionrom, deleted, free.\n", argv[2]); + return -1; + } } return add_blob(rom, argv[0], argv[1], type); diff --git a/util/newconfig/config.g b/util/newconfig/config.g index 853f0dcc45..f2b8df17a9 100644 --- a/util/newconfig/config.g +++ b/util/newconfig/config.g @@ -2298,7 +2298,7 @@ def writemakefile(path): file.write("\t./cbfstool %s create %s %s %s.bootblock\n" %(i.name, romsize, bootblocksize, i.name)) for j in pciroms: - file.write("\t./cbfstool %s add %s pci%04x,%04x.rom 48\n" % (i.name, j.name, j.pci_vid, j.pci_did)) + file.write("\t./cbfstool %s add %s pci%04x,%04x.rom optionrom\n" % (i.name, j.name, j.pci_vid, j.pci_did)) for j in i.roms: #failover is a hack that will go away soon. if (j != "failover") and (rommapping[j] != "/dev/null"): |