diff --git a/msm/sde/sde_crtc.c b/msm/sde/sde_crtc.c index 677287bc6f..d562e46c5f 100644 --- a/msm/sde/sde_crtc.c +++ b/msm/sde/sde_crtc.c @@ -5711,9 +5711,6 @@ void sde_crtc_misr_setup(struct drm_crtc *crtc, bool enable, u32 frame_count) } sde_crtc = to_sde_crtc(crtc); - if (!sde_crtc->misr_reconfigure) - return; - sde_crtc->misr_enable_sui = enable; sde_crtc->misr_frame_count = frame_count; for (i = 0; i < sde_crtc->num_mixers; ++i) { @@ -5723,7 +5720,6 @@ void sde_crtc_misr_setup(struct drm_crtc *crtc, bool enable, u32 frame_count) m->hw_lm->ops.setup_misr(m->hw_lm, enable, frame_count); } - sde_crtc->misr_reconfigure = false; } void sde_crtc_get_misr_info(struct drm_crtc *crtc, diff --git a/msm/sde/sde_encoder.c b/msm/sde/sde_encoder.c index 4364a6f20b..117f452805 100644 --- a/msm/sde/sde_encoder.c +++ b/msm/sde/sde_encoder.c @@ -3413,12 +3413,14 @@ static void _sde_encoder_kickoff_phys(struct sde_encoder_virt *sde_enc) struct sde_kms *sde_kms = NULL; struct sde_crtc_misr_info crtc_misr_info = {false, 0}; bool is_regdma_blocking = false, is_vid_mode = false; + struct sde_crtc *sde_crtc; if (!sde_enc) { SDE_ERROR("invalid encoder\n"); return; } + sde_crtc = to_sde_crtc(sde_enc->crtc); if (sde_encoder_check_curr_mode(&sde_enc->base, MSM_DISPLAY_VIDEO_MODE)) is_vid_mode = true; @@ -3486,9 +3488,12 @@ static void _sde_encoder_kickoff_phys(struct sde_encoder_virt *sde_enc) sde_enc->misr_frame_count); sde_crtc_get_misr_info(sde_enc->crtc, &crtc_misr_info); - if (crtc_misr_info.misr_enable) + if (crtc_misr_info.misr_enable && sde_crtc && + sde_crtc->misr_reconfigure) { sde_crtc_misr_setup(sde_enc->crtc, true, crtc_misr_info.misr_frame_count); + sde_crtc->misr_reconfigure = false; + } _sde_encoder_trigger_start(sde_enc->cur_master);