diff --git a/msm/sde/sde_crtc.c b/msm/sde/sde_crtc.c index 83a7bbef28db..31953523adab 100644 --- a/msm/sde/sde_crtc.c +++ b/msm/sde/sde_crtc.c @@ -1370,8 +1370,8 @@ static void _sde_crtc_blend_setup_mixer(struct drm_crtc *crtc, struct sde_rect plane_crtc_roi; uint32_t stage_idx, lm_idx; int zpos_cnt[SDE_STAGE_MAX + 1] = { 0 }; - int i, cnt = 0; - bool bg_alpha_enable = false; + int i, mode, cnt = 0; + bool bg_alpha_enable = false, is_secure = false; u32 blend_type; if (!sde_crtc || !crtc->state || !mixer) { @@ -1401,6 +1401,12 @@ static void _sde_crtc_blend_setup_mixer(struct drm_crtc *crtc, pstate = to_sde_plane_state(state); fb = state->fb; + mode = sde_plane_get_property(pstate, + PLANE_PROP_FB_TRANSLATION_MODE); + is_secure = ((mode == SDE_DRM_FB_SEC) || + (mode == SDE_DRM_FB_SEC_DIR_TRANS)) ? + true : false; + sde_plane_ctl_flush(plane, ctl, true); SDE_DEBUG("crtc %d stage:%d - plane %d sspp %d fb %d\n", @@ -1432,7 +1438,7 @@ static void _sde_crtc_blend_setup_mixer(struct drm_crtc *crtc, state->src_w >> 16, state->src_h >> 16, state->crtc_x, state->crtc_y, state->crtc_w, state->crtc_h, - pstate->rotation); + pstate->rotation, is_secure); stage_idx = zpos_cnt[pstate->stage]++; stage_cfg->stage[pstate->stage][stage_idx] =