mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-12 00:38:55 +00:00
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>
This commit is contained in:
parent
e63f26d375
commit
38ae9ec40f
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user