diff --git a/msm/msm_atomic.c b/msm/msm_atomic.c index 832721a851..441f7d8c9f 100644 --- a/msm/msm_atomic.c +++ b/msm/msm_atomic.c @@ -88,7 +88,8 @@ static inline bool _msm_seamless_for_crtc(struct drm_atomic_state *state, if (msm_is_mode_seamless_dms(msm_mode) && !enable) return true; - if (!crtc_state->mode_changed && crtc_state->connectors_changed) { + if (!crtc_state->mode_changed && crtc_state->connectors_changed && + crtc_state->active) { for_each_old_connector_in_state(state, connector, conn_state, i) { if ((conn_state->crtc == crtc_state->crtc) || @@ -319,6 +320,9 @@ msm_crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state) mode = &new_crtc_state->mode; adjusted_mode = &new_crtc_state->adjusted_mode; + if (!new_crtc_state->active) + continue; + if (!new_crtc_state->mode_changed && new_crtc_state->connectors_changed) { if (_msm_seamless_for_conn(connector,