summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWard Vandewege <ward@gnu.org>2009-05-13 20:08:28 +0000
committerMyles Watson <mylesgw@gmail.com>2009-05-13 20:08:28 +0000
commita064b5239dd8cda663af5d99603ff21492ca52d7 (patch)
treec8d523b4a62afbf4f6845ed575f2ee1ca820d6bd
parent5eceb32a79d4298a9f57bbe9fd5e06a83db0ce95 (diff)
downloadcoreboot-a064b5239dd8cda663af5d99603ff21492ca52d7.tar.xz
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
-rw-r--r--util/cbfstool/add.c40
-rw-r--r--util/newconfig/config.g2
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"):