aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0516-drm-amd-dal-delay-mst-detection-start-till-first-drm.patch
blob: 674c72dce4c7064e828a99a36ba0d6623a9d083d (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
54
55
56
57
58
59
60
From 5e1f831ea1b826f9f20e566ec5ac820f5ef0f696 Mon Sep 17 00:00:00 2001
From: Mykola Lysenko <Mykola.Lysenko@amd.com>
Date: Tue, 24 Nov 2015 17:30:44 +0800
Subject: [PATCH 0516/1110] drm/amd/dal: delay mst detection start till first
 drm detect

Signed-off-by: Harry Wentland <harry.wentland@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
---
 drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dc_helpers.c | 8 ++++----
 drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c   | 8 +++++++-
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dc_helpers.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dc_helpers.c
index beaef70..c3b6715 100644
--- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dc_helpers.c
+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dc_helpers.c
@@ -331,8 +331,7 @@ bool dc_helpers_dp_mst_start_top_mgr(
 	struct drm_device *dev = adev->ddev;
 	struct amdgpu_connector *aconnector = get_connector_for_link(dev, link);
 
-	if (aconnector)
-		drm_dp_mst_topology_mgr_set_mst(&aconnector->mst_mgr, true);
+	aconnector->is_mst_connector = true;
 
 	return true;
 }
@@ -345,6 +344,7 @@ void dc_helpers_dp_mst_stop_top_mgr(
 	struct drm_device *dev = adev->ddev;
 	struct amdgpu_connector *aconnector = get_connector_for_link(dev, link);
 
-	if (aconnector)
-		drm_dp_mst_topology_mgr_set_mst(&aconnector->mst_mgr, false);
+	drm_dp_mst_topology_mgr_set_mst(&aconnector->mst_mgr, false);
+
+	aconnector->is_mst_connector = false;
 }
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 bfff48c..59a6a28 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
@@ -1002,8 +1002,14 @@ amdgpu_dm_connector_detect(struct drm_connector *connector, bool force)
 	 * TODO: check whether we should lock here for mst_mgr.lock
 	 */
 	/* set root connector to disconnected */
-	if (aconnector->mst_mgr.mst_state)
+	if (aconnector->is_mst_connector) {
+		if (!aconnector->mst_mgr.mst_state)
+			drm_dp_mst_topology_mgr_set_mst(
+				&aconnector->mst_mgr,
+				true);
+
 		return connector_status_disconnected;
+	}
 
 	connected = (NULL != aconnector->dc_sink);
 	return (connected ? connector_status_connected :
-- 
2.7.4