diff --git a/msm/msm_mmu.h b/msm/msm_mmu.h index d8901761c5..4aa76639db 100644 --- a/msm/msm_mmu.h +++ b/msm/msm_mmu.h @@ -50,8 +50,7 @@ struct msm_mmu_funcs { int dir, u32 flags); void (*destroy)(struct msm_mmu *mmu); bool (*is_domain_secure)(struct msm_mmu *mmu); - int (*set_attribute)(struct msm_mmu *mmu, - enum iommu_attr attr, void *data); + int (*enable_smmu_translations)(struct msm_mmu *mmu); int (*one_to_one_map)(struct msm_mmu *mmu, uint32_t iova, uint32_t dest_address, uint32_t size, int prot); int (*one_to_one_unmap)(struct msm_mmu *mmu, uint32_t dest_address, diff --git a/msm/msm_smmu.c b/msm/msm_smmu.c index 93b96c4964..29de50ead0 100644 --- a/msm/msm_smmu.c +++ b/msm/msm_smmu.c @@ -129,8 +129,7 @@ static void msm_smmu_detach(struct msm_mmu *mmu, const char * const *names, dev_dbg(client->dev, "iommu domain detached\n"); } -static int msm_smmu_set_attribute(struct msm_mmu *mmu, - enum iommu_attr attr, void *data) +static int msm_enable_smmu_translations(struct msm_mmu *mmu) { struct msm_smmu *smmu = to_msm_smmu(mmu); struct msm_smmu_client *client = msm_smmu_to_client(smmu); @@ -139,9 +138,9 @@ static int msm_smmu_set_attribute(struct msm_mmu *mmu, if (!client || !client->domain) return -ENODEV; - ret = iommu_domain_set_attr(client->domain, attr, data); + ret = qcom_iommu_enable_s1_translation(client->domain); if (ret) - DRM_ERROR("set domain attribute failed:%d\n", ret); + DRM_ERROR("enable iommu s1 translations failed:%d\n", ret); return ret; } @@ -307,7 +306,7 @@ static const struct msm_mmu_funcs funcs = { .unmap_dma_buf = msm_smmu_unmap_dma_buf, .destroy = msm_smmu_destroy, .is_domain_secure = msm_smmu_is_domain_secure, - .set_attribute = msm_smmu_set_attribute, + .enable_smmu_translations = msm_enable_smmu_translations, .one_to_one_map = msm_smmu_one_to_one_map, .one_to_one_unmap = msm_smmu_one_to_one_unmap, .get_dev = msm_smmu_get_dev, diff --git a/msm/sde/sde_kms.c b/msm/sde/sde_kms.c index d1f7359b6f..b2299e65c7 100644 --- a/msm/sde/sde_kms.c +++ b/msm/sde/sde_kms.c @@ -4063,7 +4063,6 @@ static int _sde_kms_mmu_init(struct sde_kms *sde_kms) { struct msm_mmu *mmu; int i, ret; - int early_map = 0; if (!sde_kms || !sde_kms->dev || !sde_kms->dev->dev) return -EINVAL; @@ -4096,7 +4095,7 @@ static int _sde_kms_mmu_init(struct sde_kms *sde_kms) ret = _sde_kms_map_all_splash_regions(sde_kms); if (ret) { SDE_ERROR("failed to map ret:%d\n", ret); - goto early_map_fail; + goto enable_trans_fail; } } @@ -4104,12 +4103,10 @@ static int _sde_kms_mmu_init(struct sde_kms *sde_kms) * disable early-map which would have been enabled during * bootup by smmu through the device-tree hint for cont-spash */ - ret = mmu->funcs->set_attribute(mmu, DOMAIN_ATTR_EARLY_MAP, - &early_map); + ret = mmu->funcs->enable_smmu_translations(mmu); if (ret) { - SDE_ERROR("failed to set_att ret:%d, early_map:%d\n", - ret, early_map); - goto early_map_fail; + SDE_ERROR("failed to enable_s1_translations ret:%d\n", ret); + goto enable_trans_fail; } } @@ -4117,7 +4114,7 @@ static int _sde_kms_mmu_init(struct sde_kms *sde_kms) return 0; -early_map_fail: +enable_trans_fail: _sde_kms_unmap_all_splash_regions(sde_kms); fail: _sde_kms_mmu_destroy(sde_kms);