This moves the pSeries platform to use the pci_controller_ops structure,
rather than ppc_md for PCI controller operations.

Signed-off-by: Daniel Axtens <d...@axtens.net>
---
 arch/powerpc/platforms/pseries/iommu.c   | 9 +++++----
 arch/powerpc/platforms/pseries/pseries.h | 2 ++
 arch/powerpc/platforms/pseries/setup.c   | 6 +++++-
 3 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/platforms/pseries/iommu.c 
b/arch/powerpc/platforms/pseries/iommu.c
index 7803a19..61d5a17 100644
--- a/arch/powerpc/platforms/pseries/iommu.c
+++ b/arch/powerpc/platforms/pseries/iommu.c
@@ -49,6 +49,7 @@
 #include <asm/mmzone.h>
 #include <asm/plpar_wrappers.h>
 
+#include "pseries.h"
 
 static void tce_invalidate_pSeries_sw(struct iommu_table *tbl,
                                      __be64 *startp, __be64 *endp)
@@ -1307,16 +1308,16 @@ void iommu_init_early_pSeries(void)
                        ppc_md.tce_free  = tce_free_pSeriesLP;
                }
                ppc_md.tce_get   = tce_get_pSeriesLP;
-               ppc_md.pci_dma_bus_setup = pci_dma_bus_setup_pSeriesLP;
-               ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_pSeriesLP;
+               pseries_pci_controller_ops.dma_bus_setup = 
pci_dma_bus_setup_pSeriesLP;
+               pseries_pci_controller_ops.dma_dev_setup = 
pci_dma_dev_setup_pSeriesLP;
                ppc_md.dma_set_mask = dma_set_mask_pSeriesLP;
                ppc_md.dma_get_required_mask = dma_get_required_mask_pSeriesLP;
        } else {
                ppc_md.tce_build = tce_build_pSeries;
                ppc_md.tce_free  = tce_free_pSeries;
                ppc_md.tce_get   = tce_get_pseries;
-               ppc_md.pci_dma_bus_setup = pci_dma_bus_setup_pSeries;
-               ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_pSeries;
+               pseries_pci_controller_ops.dma_bus_setup = 
pci_dma_bus_setup_pSeries;
+               pseries_pci_controller_ops.dma_dev_setup = 
pci_dma_dev_setup_pSeries;
        }
 
 
diff --git a/arch/powerpc/platforms/pseries/pseries.h 
b/arch/powerpc/platforms/pseries/pseries.h
index 1796c54..cd64672 100644
--- a/arch/powerpc/platforms/pseries/pseries.h
+++ b/arch/powerpc/platforms/pseries/pseries.h
@@ -65,6 +65,8 @@ extern int dlpar_detach_node(struct device_node *);
 struct pci_host_bridge;
 int pseries_root_bridge_prepare(struct pci_host_bridge *bridge);
 
+extern struct pci_controller_ops pseries_pci_controller_ops;
+
 unsigned long pseries_memory_block_size(void);
 
 #endif /* _PSERIES_PSERIES_H */
diff --git a/arch/powerpc/platforms/pseries/setup.c 
b/arch/powerpc/platforms/pseries/setup.c
index 1a5f884..328e318 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -478,6 +478,7 @@ static void __init find_and_init_phbs(void)
                rtas_setup_phb(phb);
                pci_process_bridge_OF_ranges(phb, node, 0);
                isa_bridge_find_early(phb);
+               phb->controller_ops = pseries_pci_controller_ops;
        }
 
        of_node_put(root);
@@ -840,6 +841,10 @@ static int pSeries_pci_probe_mode(struct pci_bus *bus)
 void pSeries_final_fixup(void) { }
 #endif
 
+struct pci_controller_ops pseries_pci_controller_ops = {
+       .probe_mode             = pSeries_pci_probe_mode,
+};
+
 define_machine(pseries) {
        .name                   = "pSeries",
        .probe                  = pSeries_probe,
@@ -848,7 +853,6 @@ define_machine(pseries) {
        .show_cpuinfo           = pSeries_show_cpuinfo,
        .log_error              = pSeries_log_error,
        .pcibios_fixup          = pSeries_final_fixup,
-       .pci_probe_mode         = pSeries_pci_probe_mode,
        .restart                = rtas_restart,
        .halt                   = rtas_halt,
        .panic                  = rtas_os_term,
-- 
2.1.4

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to