diff options
author | Emil Medve <Emilian.Medve@Freescale.com> | 2013-04-24 08:16:45 (GMT) |
---|---|---|
committer | Fleming Andrew-AFLEMING <AFLEMING@freescale.com> | 2013-04-24 21:45:15 (GMT) |
commit | 29b70282125b72de8c691df1efc30c5ba56490b4 (patch) | |
tree | 9108766de819192d4fe46d32382d76c0caccae66 /drivers/staging/fsl_qbman | |
parent | 533ed87ae1b64ba52dc201c8a25f116cc52bc4d0 (diff) | |
download | linux-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.c | 8 |
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 |