Commit 38ae9ec4 authored by Daniel Axtens's avatar Daniel Axtens Committed by Michael Ellerman

powerpc/pseries: Move controller ops from ppc_md to controller_ops

This moves the pSeries platform to use the pci_controller_ops structure,
rather than ppc_md for PCI controller operations.
Signed-off-by: default avatarDaniel Axtens <dja@axtens.net>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent e63f26d3
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
#include <asm/mmzone.h> #include <asm/mmzone.h>
#include <asm/plpar_wrappers.h> #include <asm/plpar_wrappers.h>
#include "pseries.h"
static void tce_invalidate_pSeries_sw(struct iommu_table *tbl, static void tce_invalidate_pSeries_sw(struct iommu_table *tbl,
__be64 *startp, __be64 *endp) __be64 *startp, __be64 *endp)
...@@ -1307,16 +1308,16 @@ void iommu_init_early_pSeries(void) ...@@ -1307,16 +1308,16 @@ void iommu_init_early_pSeries(void)
ppc_md.tce_free = tce_free_pSeriesLP; ppc_md.tce_free = tce_free_pSeriesLP;
} }
ppc_md.tce_get = tce_get_pSeriesLP; ppc_md.tce_get = tce_get_pSeriesLP;
ppc_md.pci_dma_bus_setup = pci_dma_bus_setup_pSeriesLP; pseries_pci_controller_ops.dma_bus_setup = pci_dma_bus_setup_pSeriesLP;
ppc_md.pci_dma_dev_setup = pci_dma_dev_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_set_mask = dma_set_mask_pSeriesLP;
ppc_md.dma_get_required_mask = dma_get_required_mask_pSeriesLP; ppc_md.dma_get_required_mask = dma_get_required_mask_pSeriesLP;
} else { } else {
ppc_md.tce_build = tce_build_pSeries; ppc_md.tce_build = tce_build_pSeries;
ppc_md.tce_free = tce_free_pSeries; ppc_md.tce_free = tce_free_pSeries;
ppc_md.tce_get = tce_get_pseries; ppc_md.tce_get = tce_get_pseries;
ppc_md.pci_dma_bus_setup = pci_dma_bus_setup_pSeries; pseries_pci_controller_ops.dma_bus_setup = pci_dma_bus_setup_pSeries;
ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_pSeries; pseries_pci_controller_ops.dma_dev_setup = pci_dma_dev_setup_pSeries;
} }
......
...@@ -32,6 +32,8 @@ ...@@ -32,6 +32,8 @@
#include <asm/firmware.h> #include <asm/firmware.h>
#include <asm/eeh.h> #include <asm/eeh.h>
#include "pseries.h"
static struct pci_bus * static struct pci_bus *
find_bus_among_children(struct pci_bus *bus, find_bus_among_children(struct pci_bus *bus,
struct device_node *dn) struct device_node *dn)
...@@ -75,6 +77,7 @@ struct pci_controller *init_phb_dynamic(struct device_node *dn) ...@@ -75,6 +77,7 @@ struct pci_controller *init_phb_dynamic(struct device_node *dn)
return NULL; return NULL;
rtas_setup_phb(phb); rtas_setup_phb(phb);
pci_process_bridge_OF_ranges(phb, dn, 0); pci_process_bridge_OF_ranges(phb, dn, 0);
phb->controller_ops = pseries_pci_controller_ops;
pci_devs_phb_init_dynamic(phb); pci_devs_phb_init_dynamic(phb);
......
...@@ -65,6 +65,8 @@ extern int dlpar_detach_node(struct device_node *); ...@@ -65,6 +65,8 @@ extern int dlpar_detach_node(struct device_node *);
struct pci_host_bridge; struct pci_host_bridge;
int pseries_root_bridge_prepare(struct pci_host_bridge *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); unsigned long pseries_memory_block_size(void);
#endif /* _PSERIES_PSERIES_H */ #endif /* _PSERIES_PSERIES_H */
...@@ -478,6 +478,7 @@ static void __init find_and_init_phbs(void) ...@@ -478,6 +478,7 @@ static void __init find_and_init_phbs(void)
rtas_setup_phb(phb); rtas_setup_phb(phb);
pci_process_bridge_OF_ranges(phb, node, 0); pci_process_bridge_OF_ranges(phb, node, 0);
isa_bridge_find_early(phb); isa_bridge_find_early(phb);
phb->controller_ops = pseries_pci_controller_ops;
} }
of_node_put(root); of_node_put(root);
...@@ -840,6 +841,10 @@ static int pSeries_pci_probe_mode(struct pci_bus *bus) ...@@ -840,6 +841,10 @@ static int pSeries_pci_probe_mode(struct pci_bus *bus)
void pSeries_final_fixup(void) { } void pSeries_final_fixup(void) { }
#endif #endif
struct pci_controller_ops pseries_pci_controller_ops = {
.probe_mode = pSeries_pci_probe_mode,
};
define_machine(pseries) { define_machine(pseries) {
.name = "pSeries", .name = "pSeries",
.probe = pSeries_probe, .probe = pSeries_probe,
...@@ -848,7 +853,6 @@ define_machine(pseries) { ...@@ -848,7 +853,6 @@ define_machine(pseries) {
.show_cpuinfo = pSeries_show_cpuinfo, .show_cpuinfo = pSeries_show_cpuinfo,
.log_error = pSeries_log_error, .log_error = pSeries_log_error,
.pcibios_fixup = pSeries_final_fixup, .pcibios_fixup = pSeries_final_fixup,
.pci_probe_mode = pSeries_pci_probe_mode,
.restart = rtas_restart, .restart = rtas_restart,
.halt = rtas_halt, .halt = rtas_halt,
.panic = rtas_os_term, .panic = rtas_os_term,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment