summaryrefslogtreecommitdiff
path: root/drivers/staging/fsl_qbman
diff options
context:
space:
mode:
authorEmil Medve <Emilian.Medve@Freescale.com>2013-04-24 08:16:45 (GMT)
committerFleming Andrew-AFLEMING <AFLEMING@freescale.com>2013-04-24 21:45:15 (GMT)
commit29b70282125b72de8c691df1efc30c5ba56490b4 (patch)
tree9108766de819192d4fe46d32382d76c0caccae66 /drivers/staging/fsl_qbman
parent533ed87ae1b64ba52dc201c8a25f116cc52bc4d0 (diff)
downloadlinux-fsl-qoriq-29b70282125b72de8c691df1efc30c5ba56490b4.tar.xz
squash! fsl_qman: Set stashing using the IOMMU API
Signed-off-by: Emil Medve <Emilian.Medve@Freescale.com> Change-Id: I60be3c3f94f50fca47a53328a70a552b74808ad1 Reviewed-on: http://git.am.freescale.net:8181/1772 Reviewed-by: Yoder Stuart-B08248 <stuart.yoder@freescale.com> Reviewed-by: Pledge Roy-R01356 <roy.pledge@freescale.com> Reviewed-by: Wang Haiying-R54964 <Haiying.Wang@freescale.com> Reviewed-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com> Tested-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com>
Diffstat (limited to 'drivers/staging/fsl_qbman')
-rw-r--r--drivers/staging/fsl_qbman/qman_driver.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/staging/fsl_qbman/qman_driver.c b/drivers/staging/fsl_qbman/qman_driver.c
index c163ddd..001eb6e 100644
--- a/drivers/staging/fsl_qbman/qman_driver.c
+++ b/drivers/staging/fsl_qbman/qman_driver.c
@@ -377,7 +377,9 @@ static struct qm_portal_config * __init parse_pcfg(struct device_node *node)
*/
pcfg->dev.bus = &platform_bus_type;
pcfg->dev.of_node = node;
+#ifdef CONFIG_IOMMU_API
pcfg->dev.archdata.iommu_domain = NULL;
+#endif
ret = of_address_to_resource(node, DPA_PORTAL_CE,
&pcfg->addr_phys[DPA_PORTAL_CE]);
@@ -462,10 +464,11 @@ static void portal_set_cpu(struct qm_portal_config *pcfg, int cpu)
if (!pcfg->iommu_domain) {
pr_err(KBUILD_MODNAME ":%s(): iommu_domain_alloc() failed",
__func__);
- return;
+ goto _no_iommu;
}
geom_attr.aperture_start = 0;
- geom_attr.aperture_end = (1ULL << 36) - 1;
+ geom_attr.aperture_end =
+ ((dma_addr_t)1 << min(8 * sizeof(dma_addr_t), (size_t)36)) - 1;
geom_attr.force_aperture = true;
ret = iommu_domain_set_attr(pcfg->iommu_domain, DOMAIN_ATTR_GEOMETRY,
&geom_attr);
@@ -511,6 +514,7 @@ static void portal_set_cpu(struct qm_portal_config *pcfg, int cpu)
goto _iommu_detach_device;
}
+_no_iommu:
#ifdef CONFIG_FSL_QMAN_CONFIG
if (qman_set_sdest(pcfg->public_cfg.channel, cpu))
#endif