Add support for romfs to option rom loading.
authorRonald G. Minnich <rminnich@gmail.com>
Mon, 6 Apr 2009 16:03:53 +0000 (16:03 +0000)
committerStefan Reinauer <stepan@openbios.org>
Mon, 6 Apr 2009 16:03:53 +0000 (16:03 +0000)
Pretty simple: Find the rom in the romfs, if found, set dev properties so
that the rest of the code works.

At some point, we can remove some of the other code, i.e. the first else,
and stop requiring people to do math.

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4077 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/devices/pci_rom.c

index 1d1024c9da59264105d4b19366ca7159199451d0..702f010eb543dd7c8f4ec23d4cb290f7e0aa28e1 100644 (file)
@@ -27,6 +27,7 @@
 #include <device/pci_ids.h>
 #include <device/pci_ops.h>
 #include <string.h>
+#include <romfs.h>
 
 struct rom_header * pci_rom_probe(struct device *dev)
 {
@@ -34,7 +35,16 @@ struct rom_header * pci_rom_probe(struct device *dev)
        struct rom_header *rom_header;
        struct pci_data *rom_data;
 
-        if (dev->on_mainboard) {
+       if (CONFIG_ROMFS) {
+               rom_address = (unsigned long) romfs_load_optionrom(dev->vendor, dev->device, NULL);
+               /* if it's in FLASH, then it's as if dev->on_mainboard was true */
+               dev->on_mainboard = 1;
+               /* and we might as well set the address correctly */
+               dev->rom_address = rom_address;
+       } else if (dev->on_mainboard) {
+               /* this is here as a legacy path. We hope it goes away soon. Users should not have to 
+                * compute the ROM address at build time!
+                */
                 // in case some device PCI_ROM_ADDRESS can not be set or readonly 
                rom_address = dev->rom_address;
         } else {