diff --git a/msm/sde/sde_crtc.c b/msm/sde/sde_crtc.c index df40f2e7..4fc0c99c 100644 --- a/msm/sde/sde_crtc.c +++ b/msm/sde/sde_crtc.c @@ -110,16 +110,6 @@ static inline struct sde_kms *_sde_crtc_get_kms(struct drm_crtc *crtc) return to_sde_kms(priv->kms); } -static inline struct drm_encoder *_sde_crtc_get_encoder(struct drm_crtc *crtc) -{ - struct drm_encoder *enc; - - drm_for_each_encoder_mask(enc, crtc->dev, crtc->state->encoder_mask) - return enc; - - return NULL; -} - /** * sde_crtc_calc_fps() - Calculates fps value. * @sde_crtc : CRTC structure @@ -3314,12 +3304,16 @@ static void sde_crtc_destroy_state(struct drm_crtc *crtc, sde_crtc = to_sde_crtc(crtc); cstate = to_sde_crtc_state(state); - enc = _sde_crtc_get_encoder(crtc); sde_kms = _sde_crtc_get_kms(crtc); + if (!sde_kms) { + SDE_ERROR("invalid sde_kms\n"); + return; + } + SDE_DEBUG("crtc%d\n", crtc->base.id); - if (sde_kms && enc) + drm_for_each_encoder_mask(enc, crtc->dev, state->encoder_mask) sde_rm_release(&sde_kms->rm, enc, true); __drm_atomic_helper_crtc_destroy_state(state); @@ -4322,18 +4316,18 @@ static int _sde_crtc_check_secure_blend_config(struct drm_crtc *crtc, } static int _sde_crtc_check_secure_single_encoder(struct drm_crtc *crtc, - int fb_sec_dir) + struct drm_crtc_state *state, int fb_sec_dir) { struct drm_encoder *encoder; int encoder_cnt = 0; if (fb_sec_dir) { drm_for_each_encoder_mask(encoder, crtc->dev, - crtc->state->encoder_mask) + state->encoder_mask) encoder_cnt++; if (encoder_cnt > MAX_ALLOWED_ENCODER_CNT_PER_SECURE_CRTC) { - SDE_ERROR("crtc%d, invalid virtual encoder crtc%d\n", + SDE_ERROR("crtc:%d invalid number of encoders:%d\n", DRMID(crtc), encoder_cnt); return -EINVAL; } @@ -4349,11 +4343,9 @@ static int _sde_crtc_check_secure_state_smmu_translation(struct drm_crtc *crtc, struct drm_encoder *encoder; int is_video_mode = false; - drm_for_each_encoder_mask(encoder, crtc->dev, - crtc->state->encoder_mask) { + drm_for_each_encoder_mask(encoder, crtc->dev, state->encoder_mask) is_video_mode |= sde_encoder_check_curr_mode(encoder, - MSM_DISPLAY_VIDEO_MODE); - } + MSM_DISPLAY_VIDEO_MODE); /* * In video mode check for null commit before transition @@ -4421,7 +4413,7 @@ static int _sde_crtc_check_secure_state(struct drm_crtc *crtc, * secure_crtc is not allowed in a shared toppolgy * across different encoders. */ - rc = _sde_crtc_check_secure_single_encoder(crtc, fb_sec_dir); + rc = _sde_crtc_check_secure_single_encoder(crtc, state, fb_sec_dir); if (rc) return rc;