drm/msm/sde: add smmu domain selection logic to connector

Add selection logic to choose smmu domain based on framebuffer
secure flag and vbif memory mapped setting.  This allows
output buffer, attached to connector, be mapped to the correct
smmu context bank.

Change-Id: Ie5f6e2da0e34b77d68bd0fdcab82c5bd118c747d
Signed-off-by: Alan Kwong <akwong@codeaurora.org>
diff --git a/drivers/gpu/drm/msm/sde/sde_connector.c b/drivers/gpu/drm/msm/sde/sde_connector.c
index 6d64b1a..0eb71fc 100644
--- a/drivers/gpu/drm/msm/sde/sde_connector.c
+++ b/drivers/gpu/drm/msm/sde/sde_connector.c
@@ -224,7 +224,12 @@
 			SDE_ERROR("failed to look up fb %lld\n", val);
 			rc = -EFAULT;
 		} else {
-			c_state->mmu_id = c_conn->mmu_id;
+			if (c_state->out_fb->flags & DRM_MODE_FB_SECURE)
+				c_state->mmu_id =
+				c_conn->mmu_id[SDE_IOMMU_DOMAIN_SECURE];
+			else
+				c_state->mmu_id =
+				c_conn->mmu_id[SDE_IOMMU_DOMAIN_UNSECURE];
 
 			rc = msm_framebuffer_prepare(c_state->out_fb,
 					c_state->mmu_id);
@@ -459,8 +464,19 @@
 	c_conn->panel = panel;
 	c_conn->display = display;
 
+	/* cache mmu_id's for later */
 	sde_kms = to_sde_kms(priv->kms);
-	c_conn->mmu_id = sde_kms->mmu_id[MSM_SMMU_DOMAIN_UNSECURE];
+	if (sde_kms->vbif[VBIF_NRT]) {
+		c_conn->mmu_id[SDE_IOMMU_DOMAIN_UNSECURE] =
+			sde_kms->mmu_id[MSM_SMMU_DOMAIN_NRT_UNSECURE];
+		c_conn->mmu_id[SDE_IOMMU_DOMAIN_SECURE] =
+			sde_kms->mmu_id[MSM_SMMU_DOMAIN_NRT_SECURE];
+	} else {
+		c_conn->mmu_id[SDE_IOMMU_DOMAIN_UNSECURE] =
+			sde_kms->mmu_id[MSM_SMMU_DOMAIN_UNSECURE];
+		c_conn->mmu_id[SDE_IOMMU_DOMAIN_SECURE] =
+			sde_kms->mmu_id[MSM_SMMU_DOMAIN_SECURE];
+	}
 
 	if (ops)
 		c_conn->ops = *ops;