From cd50910fc45ff921fa6d02303026231e92a98b36 Mon Sep 17 00:00:00 2001 From: Mykola Lysenko Date: Wed, 9 Dec 2015 20:09:07 +0800 Subject: [PATCH 0597/1110] drm/amd/dal: remove mst sink from connector and link When we detected that MST sink was disconnected, connector sink pointer should be cleaned-up and sink should be freed Signed-off-by: Harry Wentland Acked-by: Harry Wentland --- drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c index ca4a244..16c82a2 100644 --- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c +++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c @@ -68,7 +68,18 @@ dm_dp_mst_detect(struct drm_connector *connector, bool force) struct amdgpu_connector *aconnector = to_amdgpu_connector(connector); struct amdgpu_connector *master = aconnector->mst_port; - return drm_dp_mst_detect_port(connector, &master->mst_mgr, aconnector->port); + enum drm_connector_status status = + drm_dp_mst_detect_port( + connector, + &master->mst_mgr, + aconnector->port); + + if (status == connector_status_disconnected && aconnector->dc_sink) { + dc_link_remove_sink(aconnector->dc_link, aconnector->dc_sink); + aconnector->dc_sink = NULL; + } + + return status; } static void -- 2.7.4