From 77cbb99a578bcd5e929e13cc07871d8a5dc15e4b Mon Sep 17 00:00:00 2001 From: Yinghai Lu Date: Thu, 13 Jan 2005 03:36:38 +0000 Subject: onboard pci_rom git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1860 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- src/devices/pci_device.c | 6 ++++-- src/devices/pci_rom.c | 11 +++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'src/devices') 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 #include +#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; } -- cgit v1.2.3