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
This commit is contained in:
parent
5eceb32a79
commit
a064b5239d
|
@ -219,6 +219,22 @@ void add_payload_usage(void)
|
||||||
("add-payload FILE NAME [OPTIONS]\tAdd a payload to the ROM\n");
|
("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)
|
int add_handler(struct rom *rom, int argc, char **argv)
|
||||||
{
|
{
|
||||||
unsigned int type = CBFS_COMPONENT_NULL;
|
unsigned int type = CBFS_COMPONENT_NULL;
|
||||||
|
@ -233,14 +249,34 @@ int add_handler(struct rom *rom, int argc, char **argv)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int component_type;
|
||||||
|
|
||||||
/* There are two ways to specify the type - a string or a number */
|
/* There are two ways to specify the type - a string or a number */
|
||||||
|
|
||||||
if (isdigit(*(argv[2])))
|
if (isdigit(*(argv[2])))
|
||||||
type = strtoul(argv[2], 0, 0);
|
type = strtoul(argv[2], 0, 0);
|
||||||
else {
|
else {
|
||||||
ERROR("String types (%s) aren't implemented yet.\n", argv[2]);
|
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 -1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return add_blob(rom, argv[0], argv[1], type);
|
return add_blob(rom, argv[0], argv[1], type);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2298,7 +2298,7 @@ def writemakefile(path):
|
||||||
file.write("\t./cbfstool %s create %s %s %s.bootblock\n"
|
file.write("\t./cbfstool %s create %s %s %s.bootblock\n"
|
||||||
%(i.name, romsize, bootblocksize, i.name))
|
%(i.name, romsize, bootblocksize, i.name))
|
||||||
for j in pciroms:
|
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:
|
for j in i.roms:
|
||||||
#failover is a hack that will go away soon.
|
#failover is a hack that will go away soon.
|
||||||
if (j != "failover") and (rommapping[j] != "/dev/null"):
|
if (j != "failover") and (rommapping[j] != "/dev/null"):
|
||||||
|
|
Loading…
Reference in New Issue