aboutsummaryrefslogtreecommitdiff
path: root/src/devices
diff options
context:
space:
mode:
authorYinghai Lu <yinghailu@gmail.com>2005-01-14 05:34:09 +0000
committerYinghai Lu <yinghailu@gmail.com>2005-01-14 05:34:09 +0000
commitbcde1618da1bcaa26419f23d7883064ce1874502 (patch)
treea98d2fe3c0a19ac3e8e2f21d32459f9965e8ef99 /src/devices
parentd57e75606501e2f7b72d4377661d8cf8dece0999 (diff)
onboard pci_rom disable onboard
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1871 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/devices')
-rw-r--r--src/devices/device.c3
-rw-r--r--src/devices/pci_device.c6
2 files changed, 8 insertions, 1 deletions
diff --git a/src/devices/device.c b/src/devices/device.c
index 9a1e40e230..8ebd925652 100644
--- a/src/devices/device.c
+++ b/src/devices/device.c
@@ -601,9 +601,12 @@ void dev_initialize(void)
printk_info("Initializing devices...\n");
#if CONFIG_CONSOLE_VGA == 1
for (dev = all_devices; dev; dev = dev->next) {
+ if ( !dev->enabled ) continue;
if (dev->enabled && !dev->initialized &&
dev->ops && dev->ops->init)
{
+ if( !dev->on_mainboard ) continue; // process addon card in second run
+ else if( dev->rom_address!=0 ) continue; // onboard and it is assigned via MB Config.lb, process it later
if( dev->on_mainboard && (dev->rom_address!=0)) continue;
printk_debug("%s init\n", dev_path(dev));
dev->initialized = 1;
diff --git a/src/devices/pci_device.c b/src/devices/pci_device.c
index d7ba57b262..8bd6ec846e 100644
--- a/src/devices/pci_device.c
+++ b/src/devices/pci_device.c
@@ -218,6 +218,10 @@ static void pci_get_rom_resource(struct device *dev, unsigned long index)
unsigned long value;
resource_t moving, limit;
+ if ((dev->on_mainboard) && (dev->rom_address == 0)) { //skip it if rom_address is not set in MB Config.lb
+ return;
+ }
+
/* Initialize the resources to nothing */
resource = new_resource(dev, index);
@@ -262,7 +266,7 @@ static void pci_get_rom_resource(struct device *dev, unsigned long index)
/* for on board device with embedded ROM image, the ROM image is at
* fixed address specified in the Config.lb, the dev->rom_address is
* inited by driver_pci_onboard_ops::enable_dev() */
- if ((dev->on_mainboard) && (dev->rom_address == 0)) {
+ if ((dev->on_mainboard) && (dev->rom_address != 0)) {
resource->base = dev->rom_address;
resource->flags |= IORESOURCE_MEM | IORESOURCE_READONLY |
IORESOURCE_ASSIGNED | IORESOURCE_FIXED;