On Thu, May 30, 2013 at 07:49:36AM -0500, Dave Frodin wrote:
From: "Kevin O'Connor" kevin@koconnor.net --- a/src/optionroms.c +++ b/src/optionroms.c @@ -178,10 +178,19 @@ deploy_romfile(struct romfile_s *file) static struct rom_header * lookup_hardcode(struct pci_device *pci) {
- char fname[17];
- snprintf(fname, sizeof(fname), "pci%04x,%04x.rom"
- struct romfile_s *file;
- char fname[19];
- snprintf(fname, sizeof(fname), "alias%04x,%04x.rom" , pci->vendor, pci->device);
- struct romfile_s *file = romfile_find(fname);
- char *alias = romfile_loadfile(fname, NULL);
- if (alias) {
file = romfile_find(alias);
free(alias);
- } else {
snprintf(fname, sizeof(fname), "pci%04x,%04x.rom"
, pci->vendor, pci->device);
file = romfile_find(fname);
- } if (file) return deploy_romfile(file); return NULL;
In your sample code above, I don't see where any pci ID translation (mapping) occurs. As an example we could have a family14 mainboard with a coreboot .config that generates a vga option rom with the name "pci1002,9802.rom". The actual mainboard could have a graphics chip with the id of 1002,9804 (which is 1 of 8 possible IDs). So there needs to be some sort of mapping function (in SeaBIOS) that maps the ID of 1002,9804 to 1002,9802.
With the above patch (assuming it works) one should be able to create a CBFS file named "alias1002,9804.rom" that contains the text "pci1002,9802.rom".
-Kevin