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:
@ -221,6 +221,16 @@ static void pci_get_rom_resource(struct device *dev, unsigned long index)
|
|||||||
/* Initialize the resources to nothing */
|
/* Initialize the resources to nothing */
|
||||||
resource = new_resource(dev, index);
|
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 */
|
/* Get the initial value */
|
||||||
value = pci_read_config32(dev, index);
|
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);
|
resource = pci_get_resource(dev, index);
|
||||||
index += (resource->flags & IORESOURCE_PCI64)?8:4;
|
index += (resource->flags & IORESOURCE_PCI64)?8:4;
|
||||||
}
|
}
|
||||||
if (rom) {
|
if (rom)
|
||||||
if ((!dev->on_mainboard) || (dev->rom_address == 0))
|
|
||||||
pci_get_rom_resource(dev, rom);
|
pci_get_rom_resource(dev, rom);
|
||||||
}
|
|
||||||
|
|
||||||
compact_resources(dev);
|
compact_resources(dev);
|
||||||
}
|
}
|
||||||
|
@ -10,12 +10,6 @@ struct rom_header * pci_rom_probe(struct device *dev)
|
|||||||
struct rom_header *rom_header;
|
struct rom_header *rom_header;
|
||||||
struct pci_data *rom_data;
|
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);
|
rom_address = pci_read_config32(dev, PCI_ROM_ADDRESS);
|
||||||
if (rom_address == 0x00000000 || rom_address == 0xffffffff) {
|
if (rom_address == 0x00000000 || rom_address == 0xffffffff) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Reference in New Issue
Block a user