|
@@ -320,7 +320,8 @@ static __devinit acpi_status add_window(struct acpi_resource *res, void *data)
|
|
|
* Ignore these tiny memory ranges */
|
|
|
if (!((window->resource.flags & IORESOURCE_MEM) &&
|
|
|
(window->resource.end - window->resource.start < 16)))
|
|
|
- pci_add_resource(&info->resources, &window->resource);
|
|
|
+ pci_add_resource_offset(&info->resources, &window->resource,
|
|
|
+ window->offset);
|
|
|
|
|
|
return AE_OK;
|
|
|
}
|
|
@@ -395,54 +396,6 @@ out1:
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
-void pcibios_resource_to_bus(struct pci_dev *dev,
|
|
|
- struct pci_bus_region *region, struct resource *res)
|
|
|
-{
|
|
|
- struct pci_controller *controller = PCI_CONTROLLER(dev);
|
|
|
- unsigned long offset = 0;
|
|
|
- int i;
|
|
|
-
|
|
|
- for (i = 0; i < controller->windows; i++) {
|
|
|
- struct pci_window *window = &controller->window[i];
|
|
|
- if (!(window->resource.flags & res->flags))
|
|
|
- continue;
|
|
|
- if (window->resource.start > res->start)
|
|
|
- continue;
|
|
|
- if (window->resource.end < res->end)
|
|
|
- continue;
|
|
|
- offset = window->offset;
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- region->start = res->start - offset;
|
|
|
- region->end = res->end - offset;
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(pcibios_resource_to_bus);
|
|
|
-
|
|
|
-void pcibios_bus_to_resource(struct pci_dev *dev,
|
|
|
- struct resource *res, struct pci_bus_region *region)
|
|
|
-{
|
|
|
- struct pci_controller *controller = PCI_CONTROLLER(dev);
|
|
|
- unsigned long offset = 0;
|
|
|
- int i;
|
|
|
-
|
|
|
- for (i = 0; i < controller->windows; i++) {
|
|
|
- struct pci_window *window = &controller->window[i];
|
|
|
- if (!(window->resource.flags & res->flags))
|
|
|
- continue;
|
|
|
- if (window->resource.start - window->offset > region->start)
|
|
|
- continue;
|
|
|
- if (window->resource.end - window->offset < region->end)
|
|
|
- continue;
|
|
|
- offset = window->offset;
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- res->start = region->start + offset;
|
|
|
- res->end = region->end + offset;
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(pcibios_bus_to_resource);
|
|
|
-
|
|
|
static int __devinit is_valid_resource(struct pci_dev *dev, int idx)
|
|
|
{
|
|
|
unsigned int i, type_mask = IORESOURCE_IO | IORESOURCE_MEM;
|
|
@@ -464,15 +417,11 @@ static int __devinit is_valid_resource(struct pci_dev *dev, int idx)
|
|
|
static void __devinit
|
|
|
pcibios_fixup_resources(struct pci_dev *dev, int start, int limit)
|
|
|
{
|
|
|
- struct pci_bus_region region;
|
|
|
int i;
|
|
|
|
|
|
for (i = start; i < limit; i++) {
|
|
|
if (!dev->resource[i].flags)
|
|
|
continue;
|
|
|
- region.start = dev->resource[i].start;
|
|
|
- region.end = dev->resource[i].end;
|
|
|
- pcibios_bus_to_resource(dev, &dev->resource[i], ®ion);
|
|
|
if ((is_valid_resource(dev, i)))
|
|
|
pci_claim_resource(dev, i);
|
|
|
}
|