Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 99dcaf79 authored by Skylar Chang's avatar Skylar Chang Committed by Gerrit - the friendly Code Review server
Browse files

msm: ipa: use IOMMU_MMIO only for device type



Remove IOMMU_MMIO flag from all the DDR mappings
done by IPA.

Change-Id: I8147d3ded0dbd71b87f2e8a8bc05531e19164a83
CRs-Fixed: 2254877
Acked-by: default avatarAdy Abraham <adya@qti.qualcomm.com>
Signed-off-by: default avatarSkylar Chang <chiaweic@codeaurora.org>
parent fcadf559
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -6298,7 +6298,7 @@ static int ipa_smmu_ap_cb_probe(struct device *dev)
				iova_p, &pa_p, size_p);
			ipa3_iommu_map(cb->mapping->domain,
				iova_p, pa_p, size_p,
				IOMMU_READ | IOMMU_WRITE | IOMMU_MMIO);
				IOMMU_READ | IOMMU_WRITE);

	smmu_info.present[IPA_SMMU_CB_AP] = true;
	ipa3_ctx->pdev = dev;
+10 −2
Original line number Diff line number Diff line
@@ -331,6 +331,11 @@ static void __map_smmu_info(struct device *dev,
	}

	for (i = 0; i < num_mapping; i++) {
		int prot = IOMMU_READ | IOMMU_WRITE;
		u32 ipa_base = ipa3_ctx->ipa_wrapper_base +
			ipa3_ctx->ctrl->ipa_reg_base_ofst;
		u32 ipa_size = ipa3_ctx->ipa_wrapper_size;

		imp_smmu_round_to_page(map_info[i].iova, map_info[i].pa,
			map_info[i].size, &iova_p, &pa_p, &size_p);

@@ -340,11 +345,14 @@ static void __map_smmu_info(struct device *dev,
				(partition->base + partition->size) <
				(iova_p + size_p));

			/* for IPA uC MBOM we need to map with device type */
			if (pa_p - ipa_base < ipa_size)
				prot |= IOMMU_MMIO;

			IMP_DBG("mapping 0x%lx to 0x%pa size %d\n",
				iova_p, &pa_p, size_p);
			iommu_map(domain,
				iova_p, pa_p, size_p,
				IOMMU_READ | IOMMU_WRITE | IOMMU_MMIO);
				iova_p, pa_p, size_p, prot);
		} else {
			IMP_DBG("unmapping 0x%lx to 0x%pa size %d\n",
				iova_p, &pa_p, size_p);