diff options
author | Yinghai Lu <yinghailu@gmail.com> | 2005-01-13 03:36:38 +0000 |
---|---|---|
committer | Yinghai Lu <yinghailu@gmail.com> | 2005-01-13 03:36:38 +0000 |
commit | 77cbb99a578bcd5e929e13cc07871d8a5dc15e4b (patch) | |
tree | 3b5b62ea820fb2862258d0f491a0a2c1b5b6263c /src/devices | |
parent | 6c615429d39d7e14f7ea97a63cabcb616d5c2438 (diff) | |
download | coreboot-77cbb99a578bcd5e929e13cc07871d8a5dc15e4b.tar.xz |
onboard pci_rom
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1860 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/devices')
-rw-r--r-- | src/devices/pci_device.c | 6 | ||||
-rw-r--r-- | src/devices/pci_rom.c | 11 |
2 files changed, 13 insertions, 4 deletions
diff --git a/src/devices/pci_device.c b/src/devices/pci_device.c index 5b038e4a8d..55049230b2 100644 --- a/src/devices/pci_device.c +++ b/src/devices/pci_device.c @@ -273,8 +273,10 @@ static void pci_read_bases(struct device *dev, unsigned int howmany, unsigned lo resource = pci_get_resource(dev, index); index += (resource->flags & IORESOURCE_PCI64)?8:4; } - if (rom) - pci_get_rom_resource(dev, rom); + if (rom) { + if ((!dev->on_mainboard) || (dev->rom_address == 0)) + pci_get_rom_resource(dev, rom); + } compact_resources(dev); } diff --git a/src/devices/pci_rom.c b/src/devices/pci_rom.c index cbeaf85743..a2e3166802 100644 --- a/src/devices/pci_rom.c +++ b/src/devices/pci_rom.c @@ -4,16 +4,23 @@ #include <device/pci_ids.h> #include <device/pci_ops.h> +#include "../drivers/pci/onboard/chip.h" + struct rom_header * pci_rom_probe(struct device *dev) { unsigned long rom_address; struct rom_header *rom_header; struct pci_data *rom_data; + if (dev->on_mainboard && (dev->rom_address != 0) ) { + rom_address = dev->rom_address; + } + else { + rom_address = pci_read_config32(dev, PCI_ROM_ADDRESS); + } + rom_address = pci_read_config32(dev, PCI_ROM_ADDRESS); if (rom_address == 0x00000000 || rom_address == 0xffffffff) { - /* FixME: search in the LinuxBIOS Image for integrated - * devices? */ return NULL; } |