Forráskód Böngészése

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 <[email protected]>
Veera Sundaram Sankaran 3 éve
szülő
commit
13cc91eee9
1 módosított fájl, 5 hozzáadás és 2 törlés
  1. 5 2
      msm/msm_atomic.c

+ 5 - 2
msm/msm_atomic.c

@@ -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 <[email protected]>
@@ -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;