diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2017-09-07 13:24:16 -0500 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2017-09-07 13:24:16 -0500 |
commit | d4fdf844c9c3debc080aea1be8b71d9d0aaa01dc (patch) | |
tree | da9fa2b768f822194e33b49e1c913c0a6eec9368 /arch/tile/kernel/pci.c | |
parent | cf5f9cc8e4e5e8e0ecc35f1c904d98f889be2c0f (diff) | |
parent | 606799cc5049ae4ccb51ba3242365ca2d411da13 (diff) |
Merge branch 'pci/irq-fixups' into next
* pci/irq-fixups:
PCI: Inline and remove pcibios_update_irq()
PCI: Remove unused pci_fixup_irqs() function
sparc/PCI: Replace pci_fixup_irqs() call with host bridge IRQ mapping hooks
unicore32/PCI: Replace pci_fixup_irqs() call with host bridge IRQ mapping hooks
tile/PCI: Replace pci_fixup_irqs() call with host bridge IRQ mapping hooks
MIPS: PCI: Replace pci_fixup_irqs() call with host bridge IRQ mapping hooks
m68k/PCI: Replace pci_fixup_irqs() call with host bridge IRQ mapping hooks
alpha/PCI: Replace pci_fixup_irqs() call with host bridge IRQ mapping hooks
sh/PCI: Replace pci_fixup_irqs() call with host bridge IRQ mapping hooks
sh/PCI: Remove __init optimisations from IRQ mapping functions/data
MIPS: PCI: Fix pcibios_scan_bus() NULL check code path
Diffstat (limited to 'arch/tile/kernel/pci.c')
-rw-r--r-- | arch/tile/kernel/pci.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/arch/tile/kernel/pci.c b/arch/tile/kernel/pci.c index bc6656b5708b..884826157765 100644 --- a/arch/tile/kernel/pci.c +++ b/arch/tile/kernel/pci.c @@ -274,6 +274,7 @@ static void fixup_read_and_payload_sizes(void) */ int __init pcibios_init(void) { + struct pci_host_bridge *bridge; int i; pr_info("PCI: Probing PCI hardware\n"); @@ -306,16 +307,26 @@ int __init pcibios_init(void) pci_add_resource(&resources, &ioport_resource); pci_add_resource(&resources, &iomem_resource); - bus = pci_scan_root_bus(NULL, 0, controller->ops, - controller, &resources); + + bridge = pci_alloc_host_bridge(0); + if (!bridge) + break; + + list_splice_init(&resources, &bridge->windows); + bridge->dev.parent = NULL; + bridge->sysdata = controller; + bridge->busnr = 0; + bridge->ops = controller->ops; + bridge->swizzle_irq = pci_common_swizzle; + bridge->map_irq = tile_map_irq; + + pci_scan_root_bus_bridge(bridge); + bus = bridge->bus; controller->root_bus = bus; controller->last_busno = bus->busn_res.end; } } - /* Do machine dependent PCI interrupt routing */ - pci_fixup_irqs(pci_common_swizzle, tile_map_irq); - /* * This comes from the generic Linux PCI driver. * |