void __init pcibios_fixup_bus(struct pci_bus *bus) { if (bus->parent) { /* This is a subordinate bridge */ pci_read_bridge_bases(bus); } }
void __init pcibios_fixup_bus(struct pci_bus *bus) { if (bus->parent) { pci_read_bridge_bases(bus); } }
void __init pcibios_allocate_bus_resources(struct list_head *bus_list) { struct list_head *ln; struct pci_bus *bus; int i; struct resource *res, *pr; if(!bus_list) return; /* Depth-First Search on bus tree */ for (ln = bus_list->next; ln != bus_list; ln=ln->next) { bus = pci_bus_b(ln); pci_read_bridge_bases(bus); for (i = 0; i < 4; ++i) { if ((res = bus->resource[i]) == NULL || !res->flags) continue; if (bus->parent == NULL) pr = (res->flags & IORESOURCE_IO)? &ioport_resource: &iomem_resource; else pr = pci_find_parent_resource(bus->self, res); if (pr && request_resource(pr, res) == 0) continue; printk(KERN_ERR "PCI: Can not allocate resource region " "%d of PCI bridge %d\n", i, bus->number); DBG("PCI: resource is %lx..%lx (%lx)\n", res->start, res->end, res->flags); } pcibios_allocate_bus_resources(&bus->children); } }
void __devinit pcibios_fixup_bus(struct pci_bus *b) { struct pci_dev *dev; pci_read_bridge_bases(b); list_for_each_entry(dev, &b->devices, bus_list) pcibios_fixup_device_resources(dev); }
void __devinit pcibios_fixup_bus(struct pci_bus *b) { struct pci_dev *dev; /* root bus? */ if (!b->parent) x86_pci_root_bus_res_quirks(b); pci_read_bridge_bases(b); list_for_each_entry(dev, &b->devices, bus_list) pcibios_fixup_device_resources(dev); }
/* * Called after each bus is probed, but before its children * are examined. */ void __devinit pcibios_fixup_bus(struct pci_bus *bus) { struct pci_dev *dev; if (bus->self) { pci_read_bridge_bases(bus); pcibios_fixup_device_resources(bus->self); } list_for_each_entry(dev, &bus->devices, bus_list) pcibios_fixup_device_resources(dev); }
void __init pcibios_fixup_bus(struct pci_bus *bus) { struct pci_controller *pci_ctrl = bus->sysdata; struct resource *res; unsigned long io_offset; int i; io_offset = (unsigned long)pci_ctrl->io_space.base; if (bus->parent == NULL) { /* this is a host bridge - fill in its resources */ pci_ctrl->bus = bus; bus->resource[0] = res = &pci_ctrl->io_resource; if (!res->flags) { if (io_offset) printk (KERN_ERR "I/O resource not set for host" " bridge %d\n", pci_ctrl->index); res->start = 0; res->end = IO_SPACE_LIMIT; res->flags = IORESOURCE_IO; } res->start += io_offset; res->end += io_offset; for (i = 0; i < 3; i++) { res = &pci_ctrl->mem_resources[i]; if (!res->flags) { if (i > 0) continue; printk(KERN_ERR "Memory resource not set for " "host bridge %d\n", pci_ctrl->index); res->start = 0; res->end = ~0U; res->flags = IORESOURCE_MEM; } bus->resource[i+1] = res; } } else { /* This is a subordinate bridge */ pci_read_bridge_bases(bus); for (i = 0; i < 4; i++) { if ((res = bus->resource[i]) == NULL || !res->flags) continue; if (io_offset && (res->flags & IORESOURCE_IO)) { res->start += io_offset; res->end += io_offset; } } } }
/* * Called after each bus is probed, but before its children * are examined. */ void __devinit pcibios_fixup_bus(struct pci_bus *bus) { struct pci_dev *dev; if (bus->number == 0) { bus->resource[0] = &pci_ioport_resource; bus->resource[1] = &pci_iomem_resource; } if (bus->self) { pci_read_bridge_bases(bus); pcibios_fixup_device_resources(bus->self); } list_for_each_entry(dev, &bus->devices, bus_list) pcibios_fixup_device_resources(dev); }
void __init pcibios_fixup_bus(struct pci_bus *bus) { struct pci_controller *pci_ctrl = bus->sysdata; struct resource *res; unsigned long io_offset; int i; io_offset = (unsigned long)pci_ctrl->io_space.base; if (bus->parent) { /* This is a subordinate bridge */ pci_read_bridge_bases(bus); for (i = 0; i < 4; i++) { if ((res = bus->resource[i]) == NULL || !res->flags) continue; if (io_offset && (res->flags & IORESOURCE_IO)) { res->start += io_offset; res->end += io_offset; } } } }
/* * Called after each bus is probed, but before its children * are examined. */ void pcibios_fixup_bus(struct pci_bus *b) { pci_read_bridge_bases(b); }
/* * Called after each bus is probed, but before its children * are examined. */ void __devinit __weak pcibios_fixup_bus(struct pci_bus *bus) { pci_read_bridge_bases(bus); }