disp: msm: avoid crtc seamless check if active_changed is set

Currently, _msm_seamless_for_crtc returns true when multiple connectors
are attached to the old_crtc_state and connector_changed flag is set.
The crtc disable is skipped due to this check when the suspend request
comes with primary + cwb. This makes the sde crtc out of sync between
user-mode and driver. Fix this by avoiding crtc seamless check when
active_changed is set as in those cases, crtc enable/disable has to
executed.

Change-Id: Ibe4e3996009712d3bd6a13651b051d5e89ec131a
Signed-off-by: Veera Sundaram Sankaran <quic_veeras@quicinc.com>
This commit is contained in:
Veera Sundaram Sankaran
2022-06-06 21:11:07 -07:00
rodzic 22914338db
commit 13cc91eee9

Wyświetl plik

@@ -1,4 +1,5 @@
/*
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
* Copyright (C) 2014 Red Hat
* Author: Rob Clark <robdclark@gmail.com>
@@ -256,7 +257,8 @@ msm_disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state)
if (!old_crtc_state->active)
continue;
if (_msm_seamless_for_crtc(old_state, crtc->state, false))
if (!crtc->state->active_changed &&
_msm_seamless_for_crtc(old_state, crtc->state, false))
continue;
funcs = crtc->helper_private;
@@ -410,7 +412,8 @@ static void msm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
if (!new_crtc_state->active)
continue;
if (_msm_seamless_for_crtc(old_state, crtc->state, true))
if (!crtc->state->active_changed &&
_msm_seamless_for_crtc(old_state, crtc->state, true))
continue;
funcs = crtc->helper_private;