From 53761746ec98c526c7d82dcf8246cbde9f09e743 Mon Sep 17 00:00:00 2001 From: Stephen Rothwell Date: Fri, 7 Dec 2007 01:58:01 +1100 Subject: [POWERPC] iSeries: Make pcibios_final_fixup not depend on pci_dn Signed-off-by: Stephen Rothwell Signed-off-by: Paul Mackerras diff --git a/arch/powerpc/platforms/iseries/pci.c b/arch/powerpc/platforms/iseries/pci.c index 7e00e35..4bcf446 100644 --- a/arch/powerpc/platforms/iseries/pci.c +++ b/arch/powerpc/platforms/iseries/pci.c @@ -188,39 +188,36 @@ void __init iSeries_pci_final_fixup(void) printk("pcibios_final_fixup\n"); for_each_pci_dev(pdev) { - struct pci_dn *pdn; const u32 *agent; const u32 *sub_bus; + unsigned char bus = pdev->bus->number; - node = find_device_node(pdev->bus->number, pdev->devfn); - printk("pci dev %p (%x.%x), node %p\n", pdev, - pdev->bus->number, pdev->devfn, node); + node = find_device_node(bus, pdev->devfn); + printk("pci dev %p (%x.%x), node %p\n", pdev, bus, + pdev->devfn, node); if (!node) { printk("PCI: Device Tree not found for 0x%016lX\n", (unsigned long)pdev); continue; } - pdn = PCI_DN(node); agent = of_get_property(node, "linux,agent-id", NULL); sub_bus = of_get_property(node, "linux,subbus", NULL); - if (pdn && agent && sub_bus) { - u8 irq = iSeries_allocate_IRQ(pdn->busno, 0, *sub_bus); + if (agent && sub_bus) { + u8 irq = iSeries_allocate_IRQ(bus, 0, *sub_bus); int err; - err = HvCallXm_connectBusUnit(pdn->busno, *sub_bus, + err = HvCallXm_connectBusUnit(bus, *sub_bus, *agent, irq); if (err) pci_log_error("Connect Bus Unit", - pdn->busno, *sub_bus, *agent, err); + bus, *sub_bus, *agent, err); else { - err = HvCallPci_configStore8(pdn->busno, - *sub_bus, *agent, - PCI_INTERRUPT_LINE, irq); + err = HvCallPci_configStore8(bus, *sub_bus, + *agent, PCI_INTERRUPT_LINE, irq); if (err) pci_log_error("PciCfgStore Irq Failed!", - pdn->busno, *sub_bus, - *agent, err); + bus, *sub_bus, *agent, err); else pdev->irq = irq; } @@ -230,7 +227,7 @@ void __init iSeries_pci_final_fixup(void) pdev->sysdata = node; PCI_DN(node)->pcidev = pdev; allocate_device_bars(pdev); - iSeries_Device_Information(pdev, num_dev, pdn->busno, *sub_bus); + iSeries_Device_Information(pdev, num_dev, bus, *sub_bus); iommu_devnode_init_iSeries(pdev, node); } iSeries_activate_IRQs(); -- cgit v0.10.2