- Major update of the dynamic device tree so it can handle

* subtractive resources
  * merging with the static device tree
  * more device types than just pci
- The piece to watch out for is the new enable_resources method that was needed in all of the drivers


git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1096 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Eric Biederman
2003-09-02 03:36:25 +00:00
parent d4c14524f5
commit e9a271e32c
25 changed files with 876 additions and 377 deletions

View File

@@ -39,8 +39,9 @@ static void acpi_init(struct device *dev)
}
static struct device_operations acpi_ops = {
.read_resources = pci_dev_read_resources,
.set_resources = pci_dev_set_resources,
.read_resources = pci_dev_read_resources,
.set_resources = pci_dev_set_resources,
.enable_resources = pci_dev_enable_resources,
.init = acpi_init,
.scan_bus = 0,
};

View File

@@ -51,10 +51,11 @@ static void ide_init(struct device *dev)
}
static struct device_operations ide_ops = {
.read_resources = pci_dev_read_resources,
.set_resources = pci_dev_set_resources,
.init = ide_init,
.scan_bus = 0,
.read_resources = pci_dev_read_resources,
.set_resources = pci_dev_set_resources,
.enable_resources = pci_dev_enable_resources,
.init = ide_init,
.scan_bus = 0,
};
static struct pci_driver ide_driver __pci_driver = {

View File

@@ -121,11 +121,44 @@ static void lpc_init(struct device *dev)
}
static void amd8111_lpc_read_resources(device_t dev)
{
unsigned int reg;
/* Get the normal pci resources of this device */
pci_dev_read_resources(dev);
/* Find my place in the resource list */
reg = dev->resources;
/* Add an extra subtractive resource for both memory and I/O */
dev->resource[reg].base = 0;
dev->resource[reg].size = 0;
dev->resource[reg].align = 0;
dev->resource[reg].gran = 0;
dev->resource[reg].limit = 0;
dev->resource[reg].flags = IORESOURCE_IO | IORESOURCE_SUBTRACTIVE | IORESOURCE_SET;
dev->resource[reg].index = 0;
reg++;
dev->resource[reg].base = 0;
dev->resource[reg].size = 0;
dev->resource[reg].align = 0;
dev->resource[reg].gran = 0;
dev->resource[reg].limit = 0;
dev->resource[reg].flags = IORESOURCE_MEM | IORESOURCE_SUBTRACTIVE | IORESOURCE_SET;
dev->resource[reg].index = 0;
reg++;
dev->resources = reg;
}
static struct device_operations lpc_ops = {
.read_resources = pci_dev_read_resources,
.set_resources = pci_dev_set_resources,
.init = lpc_init,
.scan_bus = 0,
.read_resources = amd8111_lpc_read_resources,
.set_resources = pci_dev_set_resources,
.enable_resources = pci_dev_enable_resources,
.init = lpc_init,
.scan_bus = walk_static_devices,
};
static struct pci_driver lpc_driver __pci_driver = {

View File

@@ -20,10 +20,11 @@ static void usb_init(struct device *dev)
}
static struct device_operations usb_ops = {
.read_resources = pci_dev_read_resources,
.set_resources = pci_dev_set_resources,
.init = usb_init,
.scan_bus = 0,
.read_resources = pci_dev_read_resources,
.set_resources = pci_dev_set_resources,
.enable_resources = pci_dev_enable_resources,
.init = usb_init,
.scan_bus = 0,
};
static struct pci_driver usb_driver __pci_driver = {

View File

@@ -24,10 +24,11 @@ static void usb2_init(struct device *dev)
}
static struct device_operations usb_ops = {
.read_resources = pci_dev_read_resources,
.set_resources = pci_dev_set_resources,
.init = usb2_init,
.scan_bus = 0,
.read_resources = pci_dev_read_resources,
.set_resources = pci_dev_set_resources,
.enable_resources = pci_dev_enable_resources,
.init = usb2_init,
.scan_bus = 0,
};
static struct pci_driver usb2_driver __pci_driver = {

View File

@@ -34,10 +34,11 @@ static void pcix_init(device_t dev)
}
static struct device_operations pcix_ops = {
.read_resources = pci_bus_read_resources,
.set_resources = pci_dev_set_resources,
.init = pcix_init,
.scan_bus = pci_scan_bridge,
.read_resources = pci_bus_read_resources,
.set_resources = pci_dev_set_resources,
.enable_resources = pci_bus_enable_resources,
.init = pcix_init,
.scan_bus = pci_scan_bridge,
};
static struct pci_driver pcix_driver __pci_driver = {
@@ -68,8 +69,9 @@ static void ioapic_enable(device_t dev)
}
static struct device_operations ioapic_ops = {
.read_resources = pci_dev_read_resources,
.set_resources = pci_dev_set_resources,
.read_resources = pci_dev_read_resources,
.set_resources = pci_dev_set_resources,
.enable_resources = pci_dev_enable_resources,
.init = 0,
.scan_bus = 0,
.enable = ioapic_enable,

View File

@@ -21,10 +21,11 @@ static void agp3bridge_init(device_t dev)
}
static struct device_operations agp3bridge_ops = {
.read_resources = pci_bus_read_resources,
.set_resources = pci_dev_set_resources,
.init = agp3bridge_init,
.scan_bus = pci_scan_bridge,
.read_resources = pci_bus_read_resources,
.set_resources = pci_dev_set_resources,
.enable_resources = pci_bus_enable_resources,
.init = agp3bridge_init,
.scan_bus = pci_scan_bridge,
};
static struct pci_driver agp3bridge_driver __pci_driver = {
@@ -60,8 +61,9 @@ static void agp3dev_enable(device_t dev)
}
static struct device_operations agp3dev_ops = {
.read_resources = pci_dev_read_resources,
.set_resources = pci_dev_set_resources,
.read_resources = pci_dev_read_resources,
.set_resources = pci_dev_set_resources,
.enable_resources = pci_dev_enable_resources,
.init = 0,
.scan_bus = 0,
.enable = agp3dev_enable,