aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Hao <haokexin@gmail.com>2013-05-21 08:05:00 -0400
committerScott Wood <scottwood@freescale.com>2013-08-07 19:38:08 -0400
commitc45e91831b80b97116eb2bbab30a95bc88e32f77 (patch)
tree99e3047e5159c328dffb01d69b1b9545fb03634f
parent2d49c42a304750c5c38c9533d48bcc3fd7f8fe61 (diff)
powerpc/fsl-pci: enable SWIOTLB in function setup_pci_atmu
This function contains all the stuff we need to check if SWIOTLB should be enabled or not. So it is more convenient to enable the SWIOTLB here than later. Signed-off-by: Kevin Hao <haokexin@gmail.com> Signed-off-by: Scott Wood <scottwood@freescale.com>
-rw-r--r--arch/powerpc/sysdev/fsl_pci.c22
1 files changed, 3 insertions, 19 deletions
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index 57e9aca53426..f32772063d13 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -377,7 +377,9 @@ static void setup_pci_atmu(struct pci_controller *hose)
377 } 377 }
378 378
379 if (hose->dma_window_size < mem) { 379 if (hose->dma_window_size < mem) {
380#ifndef CONFIG_SWIOTLB 380#ifdef CONFIG_SWIOTLB
381 ppc_swiotlb_enable = 1;
382#else
381 pr_err("%s: ERROR: Memory size exceeds PCI ATMU ability to " 383 pr_err("%s: ERROR: Memory size exceeds PCI ATMU ability to "
382 "map - enable CONFIG_SWIOTLB to avoid dma errors.\n", 384 "map - enable CONFIG_SWIOTLB to avoid dma errors.\n",
383 name); 385 name);
@@ -1086,28 +1088,10 @@ static int fsl_pci_probe(struct platform_device *pdev)
1086{ 1088{
1087 int ret; 1089 int ret;
1088 struct device_node *node; 1090 struct device_node *node;
1089#ifdef CONFIG_SWIOTLB
1090 struct pci_controller *hose;
1091#endif
1092 1091
1093 node = pdev->dev.of_node; 1092 node = pdev->dev.of_node;
1094 ret = fsl_add_bridge(pdev, fsl_pci_primary == node); 1093 ret = fsl_add_bridge(pdev, fsl_pci_primary == node);
1095 1094
1096#ifdef CONFIG_SWIOTLB
1097 if (ret == 0) {
1098 hose = pci_find_hose_for_OF_device(pdev->dev.of_node);
1099
1100 /*
1101 * if we couldn't map all of DRAM via the dma windows
1102 * we need SWIOTLB to handle buffers located outside of
1103 * dma capable memory region
1104 */
1105 if (memblock_end_of_DRAM() - 1 > hose->dma_window_base_cur +
1106 hose->dma_window_size)
1107 ppc_swiotlb_enable = 1;
1108 }
1109#endif
1110
1111 mpc85xx_pci_err_probe(pdev); 1095 mpc85xx_pci_err_probe(pdev);
1112 1096
1113 return 0; 1097 return 0;