summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2018-06-29 12:04:15 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2018-06-29 12:04:15 -0700
commit0c110c0c259860040d40a54d13f70ba12431c1d9 (patch)
treeaeec2ce4556dbe4ba78ccb86e976b9e1c6a7a36d
parentfac70d73d2950c7461557aff0e0237963a46ec47 (diff)
parente7d10511017daa1caab3dab11cce91e2bf48a976 (diff)
Merge "drm: msm: sde: move S1 smmu enablement earlier"
-rw-r--r--drivers/gpu/drm/msm/sde/sde_kms.c15
-rw-r--r--drivers/gpu/drm/msm/sde/sde_splash.c27
2 files changed, 16 insertions, 26 deletions
diff --git a/drivers/gpu/drm/msm/sde/sde_kms.c b/drivers/gpu/drm/msm/sde/sde_kms.c
index 436f61ffaaa6..987da50f54ca 100644
--- a/drivers/gpu/drm/msm/sde/sde_kms.c
+++ b/drivers/gpu/drm/msm/sde/sde_kms.c
@@ -1128,6 +1128,7 @@ static int _sde_kms_mmu_init(struct sde_kms *sde_kms)
{
struct msm_mmu *mmu;
int i, ret;
+ int data = 0;
for (i = 0; i < MSM_SMMU_DOMAIN_MAX; i++) {
struct msm_gem_address_space *aspace;
@@ -1188,6 +1189,20 @@ static int _sde_kms_mmu_init(struct sde_kms *sde_kms)
msm_gem_address_space_put(aspace);
goto fail;
}
+
+ /*
+ * Enable stage 1 smmu after user has finished early
+ * mapping of splash memory.
+ */
+ ret = mmu->funcs->set_property(mmu,
+ DOMAIN_ATTR_EARLY_MAP,
+ &data);
+ if (ret) {
+ SDE_ERROR("failed to set map att(%d): %d\n",
+ data, ret);
+ msm_gem_address_space_put(aspace);
+ goto fail;
+ }
}
}
diff --git a/drivers/gpu/drm/msm/sde/sde_splash.c b/drivers/gpu/drm/msm/sde/sde_splash.c
index f7e302ecc412..388075235246 100644
--- a/drivers/gpu/drm/msm/sde/sde_splash.c
+++ b/drivers/gpu/drm/msm/sde/sde_splash.c
@@ -856,16 +856,12 @@ int sde_splash_free_resource(struct msm_kms *kms,
}
/*
- * In below function, it will
- * 1. Notify LK to stop display splash.
- * 2. Set DOMAIN_ATTR_EARLY_MAP to 1 to enable stage 1 translation in iommu.
+ * Below function will notify LK to stop display splash.
*/
int sde_splash_lk_stop_splash(struct msm_kms *kms)
{
struct sde_splash_info *sinfo;
- struct msm_mmu *mmu;
struct sde_kms *sde_kms = to_sde_kms(kms);
- int ret;
sinfo = &sde_kms->splash_info;
@@ -884,26 +880,5 @@ int sde_splash_lk_stop_splash(struct msm_kms *kms)
}
mutex_unlock(&sde_splash_lock);
- if (!sde_kms->aspace[0] || !sde_kms->aspace[0]->mmu) {
- /* We do not return fault value here, to ensure
- * flag "lk_is_exited" is set.
- */
- SDE_ERROR("invalid mmu\n");
- WARN_ON(1);
- } else {
- mmu = sde_kms->aspace[0]->mmu;
- /* After LK has exited, set early domain map attribute
- * to 1 to enable stage 1 translation in iommu driver.
- */
- if (mmu->funcs && mmu->funcs->set_property) {
- ret = mmu->funcs->set_property(mmu,
- DOMAIN_ATTR_EARLY_MAP,
- &sinfo->display_splash_enabled);
-
- if (ret)
- SDE_ERROR("set_property failed\n");
- }
- }
-
return 0;
}