onboard pci_rom
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1860 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
6c615429d3
commit
77cbb99a57
|
@ -273,8 +273,10 @@ 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) {
|
||||||
pci_get_rom_resource(dev, rom);
|
if ((!dev->on_mainboard) || (dev->rom_address == 0))
|
||||||
|
pci_get_rom_resource(dev, rom);
|
||||||
|
}
|
||||||
|
|
||||||
compact_resources(dev);
|
compact_resources(dev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,16 +4,23 @@
|
||||||
#include <device/pci_ids.h>
|
#include <device/pci_ids.h>
|
||||||
#include <device/pci_ops.h>
|
#include <device/pci_ops.h>
|
||||||
|
|
||||||
|
#include "../drivers/pci/onboard/chip.h"
|
||||||
|
|
||||||
struct rom_header * pci_rom_probe(struct device *dev)
|
struct rom_header * pci_rom_probe(struct device *dev)
|
||||||
{
|
{
|
||||||
unsigned long rom_address;
|
unsigned long rom_address;
|
||||||
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) {
|
||||||
/* FixME: search in the LinuxBIOS Image for integrated
|
|
||||||
* devices? */
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,16 @@
|
||||||
#include <device/pci_ops.h>
|
#include <device/pci_ops.h>
|
||||||
#include "chip.h"
|
#include "chip.h"
|
||||||
|
|
||||||
|
static void onboard_enable(device_t dev)
|
||||||
|
{
|
||||||
|
struct drivers_pci_onboard_config *conf;
|
||||||
|
conf = dev->chip_info;
|
||||||
|
dev->rom_address = conf->rom_address;
|
||||||
|
}
|
||||||
|
|
||||||
struct chip_operations drivers_pci_onboard_ops = {
|
struct chip_operations drivers_pci_onboard_ops = {
|
||||||
#if CONFIG_CHIP_NAME == 1
|
#if CONFIG_CHIP_NAME == 1
|
||||||
CHIP_NAME("Onboard PCI")
|
CHIP_NAME("Onboard PCI")
|
||||||
#endif
|
#endif
|
||||||
|
.enable_dev = onboard_enable,
|
||||||
};
|
};
|
||||||
|
|
|
@ -72,6 +72,7 @@ struct device {
|
||||||
unsigned int initialized : 1; /* set if we have initialized the device */
|
unsigned int initialized : 1; /* set if we have initialized the device */
|
||||||
unsigned int have_resources : 1; /* Set if we have read the devices resources */
|
unsigned int have_resources : 1; /* Set if we have read the devices resources */
|
||||||
unsigned int on_mainboard : 1;
|
unsigned int on_mainboard : 1;
|
||||||
|
unsigned long rom_address;
|
||||||
|
|
||||||
uint8_t command;
|
uint8_t command;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue