better embedded ROM support, done blindly
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1863 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
75f5b559e6
commit
bc5399aa6e
|
@ -221,6 +221,16 @@ static void pci_get_rom_resource(struct device *dev, unsigned long index)
|
|||
/* Initialize the resources to nothing */
|
||||
resource = new_resource(dev, 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)) {
|
||||
resource->base = dev->rom_address;
|
||||
resource->flags |= IORESOURCE_MEM | IORESOURCE_READONLY |
|
||||
IORESOURCE_ASSIGNED | IORESOURCE_FIXED;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Get the initial value */
|
||||
value = pci_read_config32(dev, index);
|
||||
|
||||
|
@ -273,10 +283,8 @@ 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) {
|
||||
if ((!dev->on_mainboard) || (dev->rom_address == 0))
|
||||
pci_get_rom_resource(dev, rom);
|
||||
}
|
||||
if (rom)
|
||||
pci_get_rom_resource(dev, rom);
|
||||
|
||||
compact_resources(dev);
|
||||
}
|
||||
|
|
|
@ -10,12 +10,6 @@ struct rom_header * pci_rom_probe(struct device *dev)
|
|||
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) {
|
||||
return NULL;
|
||||
|
|
Loading…
Reference in New Issue