[coreboot] [v2] r4282 - in trunk/coreboot-v2/util: cbfstool newconfig

svn at coreboot.org svn at coreboot.org
Wed May 13 22:08:28 CEST 2009


Author: myles
Date: 2009-05-13 22:08:28 +0200 (Wed, 13 May 2009)
New Revision: 4282

Modified:
   trunk/coreboot-v2/util/cbfstool/add.c
   trunk/coreboot-v2/util/newconfig/config.g
Log:
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 at gnu.org>
Acked-by: Myles Watson <mylesgw at gmail.com>


Modified: trunk/coreboot-v2/util/cbfstool/add.c
===================================================================
--- trunk/coreboot-v2/util/cbfstool/add.c	2009-05-13 16:27:25 UTC (rev 4281)
+++ trunk/coreboot-v2/util/cbfstool/add.c	2009-05-13 20:08:28 UTC (rev 4282)
@@ -219,6 +219,22 @@
 	    ("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 @@
 		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);

Modified: trunk/coreboot-v2/util/newconfig/config.g
===================================================================
--- trunk/coreboot-v2/util/newconfig/config.g	2009-05-13 16:27:25 UTC (rev 4281)
+++ trunk/coreboot-v2/util/newconfig/config.g	2009-05-13 20:08:28 UTC (rev 4282)
@@ -2298,7 +2298,7 @@
 		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"):





More information about the coreboot mailing list