From 19c7b18ee85b5150e0afe802d553555050db6134 Mon Sep 17 00:00:00 2001 From: Andrey Grodzovsky Date: Thu, 7 Jan 2016 17:08:15 -0500 Subject: [PATCH 1241/1565] drm/amd/dal: Release sink for MST connector when resetting the connector. Change-Id: Ie94206f5bcdb739fd4eb82ed718ca82a1049977b 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 0ff1ec3..2184985 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 @@ -352,6 +352,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) -- 1.9.1