From 1f886932aadc7a15afb891c7fec9aa9a7f4a20f3 Mon Sep 17 00:00:00 2001 From: Mykola Lysenko Date: Wed, 9 Dec 2015 20:09:07 +0800 Subject: [PATCH 1162/1565] 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 Change-Id: I5d0d5c9a3c063b69a4e5ef86aa6f55340e8da839 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 345d8fe..b02a2bd 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 -- 1.9.1