powerpc: move find_and_init_phbs() to pSeries specific code
authorDaniel Axtens <dja@axtens.net>
Tue, 31 Mar 2015 05:00:39 +0000 (16:00 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Sat, 11 Apr 2015 10:49:09 +0000 (20:49 +1000)
Previously, find_and_init_phbs() was used in both PowerNV and pSeries
setup. However, since RTAS support has been dropped from PowerNV, we
can move it into a platform-specific file.

Signed-off-by: Daniel Axtens <dja@axtens.net>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/ppc-pci.h
arch/powerpc/kernel/rtas_pci.c
arch/powerpc/platforms/pseries/setup.c

index ade7523..4122a86 100644 (file)
@@ -23,8 +23,6 @@ extern void pci_setup_phb_io_dynamic(struct pci_controller *hose, int primary);
 
 extern struct list_head hose_list;
 
-extern void find_and_init_phbs(void);
-
 extern struct pci_dev *isa_bridge_pcidev;      /* may be NULL if no ISA bus */
 
 /** Bus Unit ID macros; get low and hi 32-bits of the 64-bit BUID */
@@ -81,7 +79,6 @@ static inline const char *eeh_driver_name(struct pci_dev *pdev)
 #endif /* CONFIG_EEH */
 
 #else /* CONFIG_PCI */
-static inline void find_and_init_phbs(void) { }
 static inline void init_pci_config_tokens(void) { }
 #endif /* !CONFIG_PCI */
 
index af29df2..73f1934 100644 (file)
@@ -277,50 +277,3 @@ int rtas_setup_phb(struct pci_controller *phb)
 
        return 0;
 }
-
-void __init find_and_init_phbs(void)
-{
-       struct device_node *node;
-       struct pci_controller *phb;
-       struct device_node *root = of_find_node_by_path("/");
-
-       for_each_child_of_node(root, node) {
-               if (node->type == NULL || (strcmp(node->type, "pci") != 0 &&
-                                          strcmp(node->type, "pciex") != 0))
-                       continue;
-
-               phb = pcibios_alloc_controller(node);
-               if (!phb)
-                       continue;
-               rtas_setup_phb(phb);
-               pci_process_bridge_OF_ranges(phb, node, 0);
-               isa_bridge_find_early(phb);
-       }
-
-       of_node_put(root);
-       pci_devs_phb_init();
-
-       /*
-        * PCI_PROBE_ONLY and PCI_REASSIGN_ALL_BUS can be set via properties
-        * in chosen.
-        */
-       if (of_chosen) {
-               const int *prop;
-
-               prop = of_get_property(of_chosen,
-                               "linux,pci-probe-only", NULL);
-               if (prop) {
-                       if (*prop)
-                               pci_add_flags(PCI_PROBE_ONLY);
-                       else
-                               pci_clear_flags(PCI_PROBE_ONLY);
-               }
-
-#ifdef CONFIG_PPC32 /* Will be made generic soon */
-               prop = of_get_property(of_chosen,
-                               "linux,pci-assign-all-buses", NULL);
-               if (prop && *prop)
-                       pci_add_flags(PCI_REASSIGN_ALL_BUS);
-#endif /* CONFIG_PPC32 */
-       }
-}
index 7030407..bcc6d24 100644 (file)
@@ -461,6 +461,53 @@ static long pseries_little_endian_exceptions(void)
 }
 #endif
 
+static void __init find_and_init_phbs(void)
+{
+       struct device_node *node;
+       struct pci_controller *phb;
+       struct device_node *root = of_find_node_by_path("/");
+
+       for_each_child_of_node(root, node) {
+               if (node->type == NULL || (strcmp(node->type, "pci") != 0 &&
+                                          strcmp(node->type, "pciex") != 0))
+                       continue;
+
+               phb = pcibios_alloc_controller(node);
+               if (!phb)
+                       continue;
+               rtas_setup_phb(phb);
+               pci_process_bridge_OF_ranges(phb, node, 0);
+               isa_bridge_find_early(phb);
+       }
+
+       of_node_put(root);
+       pci_devs_phb_init();
+
+       /*
+        * PCI_PROBE_ONLY and PCI_REASSIGN_ALL_BUS can be set via properties
+        * in chosen.
+        */
+       if (of_chosen) {
+               const int *prop;
+
+               prop = of_get_property(of_chosen,
+                               "linux,pci-probe-only", NULL);
+               if (prop) {
+                       if (*prop)
+                               pci_add_flags(PCI_PROBE_ONLY);
+                       else
+                               pci_clear_flags(PCI_PROBE_ONLY);
+               }
+
+#ifdef CONFIG_PPC32 /* Will be made generic soon */
+               prop = of_get_property(of_chosen,
+                               "linux,pci-assign-all-buses", NULL);
+               if (prop && *prop)
+                       pci_add_flags(PCI_REASSIGN_ALL_BUS);
+#endif /* CONFIG_PPC32 */
+       }
+}
+
 static void __init pSeries_setup_arch(void)
 {
        set_arch_panic_timeout(10, ARCH_PANIC_TIMEOUT);