diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0629-drm-amd-dal-remove-sink-from-MST-link.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0629-drm-amd-dal-remove-sink-from-MST-link.patch | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0629-drm-amd-dal-remove-sink-from-MST-link.patch b/common/recipes-kernel/linux/files/0629-drm-amd-dal-remove-sink-from-MST-link.patch new file mode 100644 index 00000000..0c810ae4 --- /dev/null +++ b/common/recipes-kernel/linux/files/0629-drm-amd-dal-remove-sink-from-MST-link.patch @@ -0,0 +1,61 @@ +From 135156ce80dfeb517b3f0bb197c94be978267f6a Mon Sep 17 00:00:00 2001 +From: Mykola Lysenko <Mykola.Lysenko@amd.com> +Date: Thu, 17 Dec 2015 19:19:08 +0800 +Subject: [PATCH 0629/1110] drm/amd/dal: remove sink from MST link + +When we remove MST display downstream, we should remove +sink during connector destruction. + +Also do not report error if sink already removed from link. +This can happen in case of physical disconnect of mst branch. + +Links will be removed in dc_link_detect. But fake removal in +MST connector destruction is not of harm, as sink not in +array already + +Signed-off-by: Mykola Lysenko <Mykola.Lysenko@amd.com> +Acked-by: Jordan Lazare <Jordan.Lazare@amd.com> +--- + drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_mst_types.c | 7 +++++-- + drivers/gpu/drm/amd/dal/dc/core/dc.c | 2 -- + 2 files changed, 5 insertions(+), 4 deletions(-) + +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 56ca101..164d80a 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 +@@ -74,7 +74,8 @@ dm_dp_mst_detect(struct drm_connector *connector, bool force) + &master->mst_mgr, + aconnector->port); + +- if (status == connector_status_disconnected && aconnector->dc_sink) { ++ if (status == connector_status_disconnected && aconnector->edid) { ++ kfree(aconnector->edid); + aconnector->edid = NULL; + } + +@@ -334,7 +335,9 @@ static void dm_dp_destroy_mst_connector( + drm_connector_cleanup(connector); + drm_modeset_unlock_all(dev); + +- kfree(connector); ++ dc_link_remove_sink(aconnector->dc_link, aconnector->dc_sink); ++ ++ kfree(aconnector); + DRM_DEBUG_KMS("\n"); + } + +diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc.c b/drivers/gpu/drm/amd/dal/dc/core/dc.c +index a37cd87..4a75cb9 100644 +--- a/drivers/gpu/drm/amd/dal/dc/core/dc.c ++++ b/drivers/gpu/drm/amd/dal/dc/core/dc.c +@@ -992,6 +992,4 @@ void dc_link_remove_sink(const struct dc_link *link, const struct dc_sink *sink) + return; + } + } +- +- BREAK_TO_DEBUGGER(); + } +-- +2.7.4 + |