Sfoglia il codice sorgente

disp: msm: replace msm_smmu_set_attribute with qcom_iommu_enable_s1_translations

Domain attributes has been deprecated on 5.14 kernel, so replace
msm_smmu_set_attribute with qcom_iommu_enable_s1_translations.

Change-Id: I1bf2d5ee089a418eb73605327e82b2e26bd6bada
Signed-off-by: Jeykumar Sankaran <[email protected]>
Lei Chen 3 anni fa
parent
commit
8f074719a5
3 ha cambiato i file con 10 aggiunte e 15 eliminazioni
  1. 1 2
      msm/msm_mmu.h
  2. 4 5
      msm/msm_smmu.c
  3. 5 8
      msm/sde/sde_kms.c

+ 1 - 2
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,

+ 4 - 5
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,

+ 5 - 8
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);