diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/devices/device.c | 3 | ||||
-rw-r--r-- | src/devices/pci_device.c | 6 |
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; |