diff options
Diffstat (limited to 'arch/parisc/kernel/pci.c')
-rw-r--r-- | arch/parisc/kernel/pci.c | 42 |
1 files changed, 5 insertions, 37 deletions
diff --git a/arch/parisc/kernel/pci.c b/arch/parisc/kernel/pci.c index 563df00..507d0ac 100644 --- a/arch/parisc/kernel/pci.c +++ b/arch/parisc/kernel/pci.c @@ -194,37 +194,13 @@ void __init pcibios_init_bus(struct pci_bus *bus) pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bridge_ctl); } - -/* KLUGE: Link the child and parent resources - generic PCI didn't */ -static void -pcibios_link_hba_resources( struct resource *hba_res, struct resource *r) -{ - if (!r->parent) { - printk(KERN_EMERG "PCI: resource not parented! [%p-%p]\n", - (void*) r->start, (void*) r->end); - r->parent = hba_res; - - /* reverse link is harder *sigh* */ - if (r->parent->child) { - if (r->parent->sibling) { - struct resource *next = r->parent->sibling; - while (next->sibling) - next = next->sibling; - next->sibling = r; - } else { - r->parent->sibling = r; - } - } else - r->parent->child = r; - } -} - /* called by drivers/pci/setup-bus.c:pci_setup_bridge(). */ void __devinit pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region, struct resource *res) { - struct pci_bus *bus = dev->bus; - struct pci_hba_data *hba = HBA_DATA(bus->bridge->platform_data); +#ifdef CONFIG_64BIT + struct pci_hba_data *hba = HBA_DATA(dev->bus->bridge->platform_data); +#endif if (res->flags & IORESOURCE_IO) { /* @@ -243,23 +219,15 @@ void __devinit pcibios_resource_to_bus(struct pci_dev *dev, } DBG_RES("pcibios_resource_to_bus(%02x %s [%lx,%lx])\n", - bus->number, res->flags & IORESOURCE_IO ? "IO" : "MEM", + dev->bus->number, res->flags & IORESOURCE_IO ? "IO" : "MEM", region->start, region->end); - - /* KLUGE ALERT - ** if this resource isn't linked to a "parent", then it seems - ** to be a child of the HBA - lets link it in. - */ - pcibios_link_hba_resources(&hba->io_space, bus->resource[0]); - pcibios_link_hba_resources(&hba->lmmio_space, bus->resource[1]); } void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, struct pci_bus_region *region) { #ifdef CONFIG_64BIT - struct pci_bus *bus = dev->bus; - struct pci_hba_data *hba = HBA_DATA(bus->bridge->platform_data); + struct pci_hba_data *hba = HBA_DATA(dev->bus->bridge->platform_data); #endif if (res->flags & IORESOURCE_MEM) { |