diff options
| author | Daniel Axtens | 2015-03-31 07:00:50 +0200 | 
|---|---|---|
| committer | Michael Ellerman | 2015-04-11 12:49:15 +0200 | 
| commit | 38ae9ec40f06f3aef5c25314f432113cf2c1340a (patch) | |
| tree | 9cf109959f4f610287c44071021bef0874424776 /arch/powerpc | |
| parent | powerpc/powermac: Move controller ops from ppc_md to controller_ops (diff) | |
| download | kernel-qcow2-linux-38ae9ec40f06f3aef5c25314f432113cf2c1340a.tar.gz kernel-qcow2-linux-38ae9ec40f06f3aef5c25314f432113cf2c1340a.tar.xz kernel-qcow2-linux-38ae9ec40f06f3aef5c25314f432113cf2c1340a.zip | |
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: Daniel Axtens <dja@axtens.net>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc')
| -rw-r--r-- | arch/powerpc/platforms/pseries/iommu.c | 9 | ||||
| -rw-r--r-- | arch/powerpc/platforms/pseries/pci_dlpar.c | 3 | ||||
| -rw-r--r-- | arch/powerpc/platforms/pseries/pseries.h | 2 | ||||
| -rw-r--r-- | arch/powerpc/platforms/pseries/setup.c | 6 | 
4 files changed, 15 insertions, 5 deletions
| diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c index 7803a19adb31..61d5a17f45c0 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/pci_dlpar.c b/arch/powerpc/platforms/pseries/pci_dlpar.c index f735f4fee48c..5d4a3df59d0c 100644 --- a/arch/powerpc/platforms/pseries/pci_dlpar.c +++ b/arch/powerpc/platforms/pseries/pci_dlpar.c @@ -32,6 +32,8 @@  #include <asm/firmware.h>  #include <asm/eeh.h> +#include "pseries.h" +  static struct pci_bus *  find_bus_among_children(struct pci_bus *bus,                          struct device_node *dn) @@ -75,6 +77,7 @@ struct pci_controller *init_phb_dynamic(struct device_node *dn)  		return NULL;  	rtas_setup_phb(phb);  	pci_process_bridge_OF_ranges(phb, dn, 0); +	phb->controller_ops = pseries_pci_controller_ops;  	pci_devs_phb_init_dynamic(phb); diff --git a/arch/powerpc/platforms/pseries/pseries.h b/arch/powerpc/platforms/pseries/pseries.h index 1796c5438cc6..cd64672e24f8 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 bcc6d24c77aa..1044b8b4da71 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, | 
