aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/sysdev/fsl_pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/sysdev/fsl_pci.c')
-rw-r--r--arch/powerpc/sysdev/fsl_pci.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index 4b74c276e427..9a8fcf0d79d7 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -111,6 +111,18 @@ static struct pci_ops fsl_indirect_pcie_ops =
111#define MAX_PHYS_ADDR_BITS 40 111#define MAX_PHYS_ADDR_BITS 40
112static u64 pci64_dma_offset = 1ull << MAX_PHYS_ADDR_BITS; 112static u64 pci64_dma_offset = 1ull << MAX_PHYS_ADDR_BITS;
113 113
114#ifdef CONFIG_SWIOTLB
115static void setup_swiotlb_ops(struct pci_controller *hose)
116{
117 if (ppc_swiotlb_enable) {
118 hose->controller_ops.dma_dev_setup = pci_dma_dev_setup_swiotlb;
119 set_pci_dma_ops(&swiotlb_dma_ops);
120 }
121}
122#else
123static inline void setup_swiotlb_ops(struct pci_controller *hose) {}
124#endif
125
114static int fsl_pci_dma_set_mask(struct device *dev, u64 dma_mask) 126static int fsl_pci_dma_set_mask(struct device *dev, u64 dma_mask)
115{ 127{
116 if (!dev->dma_mask || !dma_supported(dev, dma_mask)) 128 if (!dev->dma_mask || !dma_supported(dev, dma_mask))
@@ -548,6 +560,9 @@ int fsl_add_bridge(struct platform_device *pdev, int is_primary)
548 /* Setup PEX window registers */ 560 /* Setup PEX window registers */
549 setup_pci_atmu(hose); 561 setup_pci_atmu(hose);
550 562
563 /* Set up controller operations */
564 setup_swiotlb_ops(hose);
565
551 return 0; 566 return 0;
552 567
553no_bridge: 568no_bridge: