aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/1003-drm-amd-dal-keep-the-old-target-if-commit-fail-for-h.patch
blob: 43d50bab4b30f3a85b08ece83509c9f1364ccf83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
From 241c93fd927bc959a80bddf085147356ff4f4ceb Mon Sep 17 00:00:00 2001
From: Eric Yang <eric.yang2@amd.com>
Date: Mon, 4 Apr 2016 10:57:43 -0400
Subject: [PATCH 1003/1110] drm/amd/dal: keep the old target if commit fail for
 headless

Signed-off-by: Eric Yang <eric.yang2@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---
 drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c
index a21d634..a091d97 100644
--- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c
+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c
@@ -2363,6 +2363,7 @@ void dm_restore_drm_connector_state(struct drm_device *dev, struct drm_connector
 	struct amdgpu_crtc *disconnected_acrtc;
 	const struct dc_sink *sink;
 	struct dc_target *commit_targets[6];
+	struct dc_target *current_target;
 	uint32_t commit_targets_count = 0;
 
 
@@ -2394,7 +2395,8 @@ void dm_restore_drm_connector_state(struct drm_device *dev, struct drm_connector
 		 */
 		manage_dm_interrupts(adev, disconnected_acrtc, false);
 		/* this is the update mode case */
-		dc_target_release(disconnected_acrtc->target);
+
+		current_target = disconnected_acrtc->target;
 
 		disconnected_acrtc->target = new_target;
 		disconnected_acrtc->enabled = true;
@@ -2416,11 +2418,12 @@ void dm_restore_drm_connector_state(struct drm_device *dev, struct drm_connector
 				commit_targets_count)) {
 			DRM_INFO("Failed to restore connector state!\n");
 			dc_target_release(disconnected_acrtc->target);
-			disconnected_acrtc->target = NULL;
-			disconnected_acrtc->enabled = false;
+			disconnected_acrtc->target = current_target;
+			manage_dm_interrupts(adev, disconnected_acrtc, true);
 			return;
 		}
 
+		dc_target_release(current_target);
 
 		dm_dc_surface_commit(dc, &disconnected_acrtc->base,
 				to_dm_connector_state(
-- 
2.7.4