diff --git a/msm/sde/sde_kms.c b/msm/sde/sde_kms.c index 87a3aaad12..90969209a7 100644 --- a/msm/sde/sde_kms.c +++ b/msm/sde/sde_kms.c @@ -4187,7 +4187,8 @@ retry: continue; lp = sde_connector_get_lp(conn); - if (lp == SDE_MODE_DPMS_LP1) { + if (lp == SDE_MODE_DPMS_LP1 && + !sde_encoder_check_curr_mode(conn->encoder, MSM_DISPLAY_VIDEO_MODE)) { /* transition LP1->LP2 on pm suspend */ ret = sde_connector_set_property_for_commit(conn, state, CONNECTOR_PROP_LP, SDE_MODE_DPMS_LP2); @@ -4199,7 +4200,8 @@ retry: } } - if (lp != SDE_MODE_DPMS_LP2) { + if (lp != SDE_MODE_DPMS_LP2 || + sde_encoder_check_curr_mode(conn->encoder, MSM_DISPLAY_VIDEO_MODE)) { /* force CRTC to be inactive */ crtc_state = drm_atomic_get_crtc_state(state, conn->state->crtc); @@ -4211,7 +4213,8 @@ retry: goto unlock; } - if (lp != SDE_MODE_DPMS_LP1) + if (lp != SDE_MODE_DPMS_LP1 || + sde_encoder_check_curr_mode(conn->encoder, MSM_DISPLAY_VIDEO_MODE)) crtc_state->active = false; ++num_crtcs; }