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:
@@ -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) 2016-2021, The Linux Foundation. All rights reserved.
|
||||||
* Copyright (C) 2014 Red Hat
|
* Copyright (C) 2014 Red Hat
|
||||||
* Author: Rob Clark <robdclark@gmail.com>
|
* 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)
|
if (!old_crtc_state->active)
|
||||||
continue;
|
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;
|
continue;
|
||||||
|
|
||||||
funcs = crtc->helper_private;
|
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)
|
if (!new_crtc_state->active)
|
||||||
continue;
|
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;
|
continue;
|
||||||
|
|
||||||
funcs = crtc->helper_private;
|
funcs = crtc->helper_private;
|
||||||
|
Reference in New Issue
Block a user