[PATCH 13/19] [POWERPC] iSeries: make pcibios_final_fixup not depend on pci_dn

Stephen Rothwell sfr at canb.auug.org.au
Fri Dec 7 01:58:01 EST 2007


Signed-off-by: Stephen Rothwell <sfr at canb.auug.org.au>
---
 arch/powerpc/platforms/iseries/pci.c |   27 ++++++++++++---------------
 1 files changed, 12 insertions(+), 15 deletions(-)

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();
-- 
1.5.3.7


-- 
Cheers,
Stephen Rothwell                    sfr at canb.auug.org.au
http://www.canb.auug.org.au/~sfr/



More information about the Linuxppc-dev mailing list