Browse Source

[POWERPC] Use for_each_ matching routinues for pci PHBs

On the Freescale embedded (83xx, 85xx, 86xx) and a few of the discrete
bridges (mpc10x, tsi108) use the new for_each_compatible_node() or
for_each_node_by_type() to provide more exact matching when looking for
PHBs in the device tree.

With the previous code it was possible to match on pci bridges since
we were only matching on device_type.

Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Kumar Gala 17 years ago
parent
commit
c9438affcb

+ 1 - 1
arch/powerpc/platforms/83xx/mpc8313_rdb.c

@@ -43,7 +43,7 @@ static void __init mpc8313_rdb_setup_arch(void)
 		ppc_md.progress("mpc8313_rdb_setup_arch()", 0);
 		ppc_md.progress("mpc8313_rdb_setup_arch()", 0);
 
 
 #ifdef CONFIG_PCI
 #ifdef CONFIG_PCI
-	for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
+	for_each_compatible_node(np, "pci", "fsl,mpc8349-pci")
 		mpc83xx_add_bridge(np);
 		mpc83xx_add_bridge(np);
 #endif
 #endif
 	mpc831x_usb_cfg();
 	mpc831x_usb_cfg();

+ 1 - 1
arch/powerpc/platforms/83xx/mpc832x_mds.c

@@ -73,7 +73,7 @@ static void __init mpc832x_sys_setup_arch(void)
 	}
 	}
 
 
 #ifdef CONFIG_PCI
 #ifdef CONFIG_PCI
-	for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
+	for_each_compatible_node(np, "pci", "fsl,mpc8349-pci")
 		mpc83xx_add_bridge(np);
 		mpc83xx_add_bridge(np);
 #endif
 #endif
 
 

+ 1 - 1
arch/powerpc/platforms/83xx/mpc832x_rdb.c

@@ -93,7 +93,7 @@ static void __init mpc832x_rdb_setup_arch(void)
 		ppc_md.progress("mpc832x_rdb_setup_arch()", 0);
 		ppc_md.progress("mpc832x_rdb_setup_arch()", 0);
 
 
 #ifdef CONFIG_PCI
 #ifdef CONFIG_PCI
-	for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
+	for_each_compatible_node(np, "pci", "fsl,mpc8349-pci")
 		mpc83xx_add_bridge(np);
 		mpc83xx_add_bridge(np);
 #endif
 #endif
 
 

+ 1 - 1
arch/powerpc/platforms/83xx/mpc834x_itx.c

@@ -52,7 +52,7 @@ static void __init mpc834x_itx_setup_arch(void)
 		ppc_md.progress("mpc834x_itx_setup_arch()", 0);
 		ppc_md.progress("mpc834x_itx_setup_arch()", 0);
 
 
 #ifdef CONFIG_PCI
 #ifdef CONFIG_PCI
-	for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
+	for_each_compatible_node(np, "pci", "fsl,mpc8349-pci")
 		mpc83xx_add_bridge(np);
 		mpc83xx_add_bridge(np);
 #endif
 #endif
 
 

+ 1 - 1
arch/powerpc/platforms/83xx/mpc834x_mds.c

@@ -83,7 +83,7 @@ static void __init mpc834x_mds_setup_arch(void)
 		ppc_md.progress("mpc834x_mds_setup_arch()", 0);
 		ppc_md.progress("mpc834x_mds_setup_arch()", 0);
 
 
 #ifdef CONFIG_PCI
 #ifdef CONFIG_PCI
-	for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
+	for_each_compatible_node(np, "pci", "fsl,mpc8349-pci")
 		mpc83xx_add_bridge(np);
 		mpc83xx_add_bridge(np);
 #endif
 #endif
 
 

+ 1 - 1
arch/powerpc/platforms/83xx/mpc836x_mds.c

@@ -79,7 +79,7 @@ static void __init mpc836x_mds_setup_arch(void)
 	}
 	}
 
 
 #ifdef CONFIG_PCI
 #ifdef CONFIG_PCI
-	for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
+	for_each_compatible_node(np, "pci", "fsl,mpc8349-pci")
 		mpc83xx_add_bridge(np);
 		mpc83xx_add_bridge(np);
 #endif
 #endif
 
 

+ 2 - 1
arch/powerpc/platforms/85xx/mpc85xx_ads.c

@@ -204,8 +204,9 @@ static void __init mpc85xx_ads_setup_arch(void)
 #endif
 #endif
 
 
 #ifdef CONFIG_PCI
 #ifdef CONFIG_PCI
-	for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
+	for_each_compatible_node(np, "pci", "fsl,mpc8540-pci")
 		fsl_add_bridge(np, 1);
 		fsl_add_bridge(np, 1);
+
 	ppc_md.pci_exclude_device = mpc85xx_exclude_device;
 	ppc_md.pci_exclude_device = mpc85xx_exclude_device;
 #endif
 #endif
 }
 }

+ 11 - 7
arch/powerpc/platforms/85xx/mpc85xx_cds.c

@@ -283,14 +283,18 @@ static void __init mpc85xx_cds_setup_arch(void)
 	}
 	}
 
 
 #ifdef CONFIG_PCI
 #ifdef CONFIG_PCI
-	for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;) {
-		struct resource rsrc;
-		of_address_to_resource(np, 0, &rsrc);
-		if ((rsrc.start & 0xfffff) == 0x8000)
-			fsl_add_bridge(np, 1);
-		else
-			fsl_add_bridge(np, 0);
+	for_each_node_by_type(np, "pci") {
+		if (of_device_is_compatible(np, "fsl,mpc8540-pci") ||
+		    of_device_is_compatible(np, "fsl,mpc8548-pcie")) {
+			struct resource rsrc;
+			of_address_to_resource(np, 0, &rsrc);
+			if ((rsrc.start & 0xfffff) == 0x8000)
+				fsl_add_bridge(np, 1);
+			else
+				fsl_add_bridge(np, 0);
+		}
 	}
 	}
+
 	ppc_md.pci_irq_fixup = mpc85xx_cds_pci_irq_fixup;
 	ppc_md.pci_irq_fixup = mpc85xx_cds_pci_irq_fixup;
 	ppc_md.pci_exclude_device = mpc85xx_exclude_device;
 	ppc_md.pci_exclude_device = mpc85xx_exclude_device;
 #endif
 #endif

+ 11 - 7
arch/powerpc/platforms/85xx/mpc85xx_ds.c

@@ -149,14 +149,18 @@ static void __init mpc85xx_ds_setup_arch(void)
 		ppc_md.progress("mpc85xx_ds_setup_arch()", 0);
 		ppc_md.progress("mpc85xx_ds_setup_arch()", 0);
 
 
 #ifdef CONFIG_PCI
 #ifdef CONFIG_PCI
-	for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;) {
-		struct resource rsrc;
-		of_address_to_resource(np, 0, &rsrc);
-		if ((rsrc.start & 0xfffff) == primary_phb_addr)
-			fsl_add_bridge(np, 1);
-		else
-			fsl_add_bridge(np, 0);
+	for_each_node_by_type(np, "pci") {
+		if (of_device_is_compatible(np, "fsl,mpc8540-pci") ||
+		    of_device_is_compatible(np, "fsl,mpc8548-pcie")) {
+			struct resource rsrc;
+			of_address_to_resource(np, 0, &rsrc);
+			if ((rsrc.start & 0xfffff) == primary_phb_addr)
+				fsl_add_bridge(np, 1);
+			else
+				fsl_add_bridge(np, 0);
+		}
 	}
 	}
+
 	uses_fsl_uli_m1575 = 1;
 	uses_fsl_uli_m1575 = 1;
 	ppc_md.pci_exclude_device = mpc85xx_exclude_device;
 	ppc_md.pci_exclude_device = mpc85xx_exclude_device;
 #endif
 #endif

+ 11 - 3
arch/powerpc/platforms/85xx/mpc85xx_mds.c

@@ -83,9 +83,17 @@ static void __init mpc85xx_mds_setup_arch(void)
 	}
 	}
 
 
 #ifdef CONFIG_PCI
 #ifdef CONFIG_PCI
-	for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
-		fsl_add_bridge(np, 1);
-	of_node_put(np);
+	for_each_node_by_type(np, "pci") {
+		if (of_device_is_compatible(np, "fsl,mpc8540-pci") ||
+		    of_device_is_compatible(np, "fsl,mpc8548-pcie")) {
+			struct resource rsrc;
+			of_address_to_resource(np, 0, &rsrc);
+			if ((rsrc.start & 0xfffff) == 0x8000)
+				fsl_add_bridge(np, 1);
+			else
+				fsl_add_bridge(np, 0);
+		}
+	}
 #endif
 #endif
 
 
 #ifdef CONFIG_QUICC_ENGINE
 #ifdef CONFIG_QUICC_ENGINE

+ 2 - 1
arch/powerpc/platforms/86xx/mpc86xx_hpcn.c

@@ -140,7 +140,7 @@ mpc86xx_hpcn_setup_arch(void)
 		ppc_md.progress("mpc86xx_hpcn_setup_arch()", 0);
 		ppc_md.progress("mpc86xx_hpcn_setup_arch()", 0);
 
 
 #ifdef CONFIG_PCI
 #ifdef CONFIG_PCI
-	for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;) {
+	for_each_compatible_node(np, "pci", "fsl,mpc8641-pcie") {
 		struct resource rsrc;
 		struct resource rsrc;
 		of_address_to_resource(np, 0, &rsrc);
 		of_address_to_resource(np, 0, &rsrc);
 		if ((rsrc.start & 0xfffff) == 0x8000)
 		if ((rsrc.start & 0xfffff) == 0x8000)
@@ -148,6 +148,7 @@ mpc86xx_hpcn_setup_arch(void)
 		else
 		else
 			fsl_add_bridge(np, 0);
 			fsl_add_bridge(np, 0);
 	}
 	}
+
 	uses_fsl_uli_m1575 = 1;
 	uses_fsl_uli_m1575 = 1;
 	ppc_md.pci_exclude_device = mpc86xx_exclude_device;
 	ppc_md.pci_exclude_device = mpc86xx_exclude_device;
 
 

+ 1 - 1
arch/powerpc/platforms/embedded6xx/linkstation.c

@@ -91,7 +91,7 @@ static void __init linkstation_setup_arch(void)
 #endif
 #endif
 
 
 	/* Lookup PCI host bridges */
 	/* Lookup PCI host bridges */
-	for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
+	for_each_compatible_node(np, "pci", "mpc10x-pci")
 		linkstation_add_bridge(np);
 		linkstation_add_bridge(np);
 
 
 	printk(KERN_INFO "BUFFALO Network Attached Storage Series\n");
 	printk(KERN_INFO "BUFFALO Network Attached Storage Series\n");

+ 1 - 1
arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c

@@ -74,7 +74,7 @@ static void __init mpc7448_hpc2_setup_arch(void)
 
 
 	/* setup PCI host bridge */
 	/* setup PCI host bridge */
 #ifdef CONFIG_PCI
 #ifdef CONFIG_PCI
-	for (np = NULL; (np = of_find_node_by_type(np, "pci")) != NULL;)
+	for_each_compatible_node(np, "pci", "tsi108-pci")
 		tsi108_setup_pci(np, MPC7448HPC2_PCI_CFG_PHYS, 0);
 		tsi108_setup_pci(np, MPC7448HPC2_PCI_CFG_PHYS, 0);
 
 
 	ppc_md.pci_exclude_device = mpc7448_hpc2_exclude_device;
 	ppc_md.pci_exclude_device = mpc7448_hpc2_exclude_device;