From 5e1f831ea1b826f9f20e566ec5ac820f5ef0f696 Mon Sep 17 00:00:00 2001 From: Mykola Lysenko 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 Acked-by: Harry Wentland --- 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