From 6b700407c7a426c98575368f2ca3489db1358fc8 Mon Sep 17 00:00:00 2001 From: Andrey Grodzovsky Date: Thu, 7 Jan 2016 17:08:15 -0500 Subject: [PATCH 0676/1110] drm/amd/dal: Release sink for MST connector when resetting the connector. Signed-off-by: Andrey Grodzovsky Acked-by: Jordan Lazare --- drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c | 5 +++++ drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c | 2 ++ 2 files changed, 7 insertions(+) diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c index 1093ab8..a98d1dd 100644 --- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c @@ -789,8 +789,13 @@ static void handle_hpd_irq(void *param) struct amdgpu_connector *aconnector = (struct amdgpu_connector *)param; struct drm_connector *connector = &aconnector->base; struct drm_device *dev = connector->dev; + bool mst_connector = aconnector->mst_mgr.mst_state; dc_link_detect(aconnector->dc_link); + /*Wait for complition of all MST connectors reset + * so the link is clean from sinks. */ + if (mst_connector && aconnector->dc_link->type == dc_connection_none) + flush_work(&aconnector->mst_mgr.destroy_connector_work); amdgpu_dm_update_connector_after_detect(aconnector); drm_kms_helper_hotplug_event(dev); } 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 3d36e91..80bd0c6 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 @@ -353,6 +353,8 @@ static void dm_dp_destroy_mst_connector( aconnector, connector->base.id, aconnector->mst_port); aconnector->port = NULL; + if (aconnector->dc_sink) + dc_link_remove_sink(aconnector->dc_link, aconnector->dc_sink); } static void dm_dp_mst_hotplug(struct drm_dp_mst_topology_mgr *mgr) -- 2.7.4