Commit 3f16ae82 authored by Aurabindo Pillai's avatar Aurabindo Pillai Committed by Alex Deucher

drm/amd/display: Clear dc remote sinks on MST disconnect

[Why&How]
Recent changes to upstream mst code remove the callback which
cleared the internal state for mst. Move the missing functionality
that was previously called through the destroy call back for mst connector
destroy
Signed-off-by: default avatarAurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: default avatarEryk Brol <eryk.brol@amd.com>
Reviewed-by: default avatarNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 22dd8982
...@@ -418,9 +418,10 @@ bool dm_helpers_dp_mst_start_top_mgr( ...@@ -418,9 +418,10 @@ bool dm_helpers_dp_mst_start_top_mgr(
void dm_helpers_dp_mst_stop_top_mgr( void dm_helpers_dp_mst_stop_top_mgr(
struct dc_context *ctx, struct dc_context *ctx,
const struct dc_link *link) struct dc_link *link)
{ {
struct amdgpu_dm_connector *aconnector = link->priv; struct amdgpu_dm_connector *aconnector = link->priv;
uint8_t i;
if (!aconnector) { if (!aconnector) {
DRM_ERROR("Failed to find connector for link!"); DRM_ERROR("Failed to find connector for link!");
...@@ -430,8 +431,25 @@ void dm_helpers_dp_mst_stop_top_mgr( ...@@ -430,8 +431,25 @@ void dm_helpers_dp_mst_stop_top_mgr(
DRM_INFO("DM_MST: stopping TM on aconnector: %p [id: %d]\n", DRM_INFO("DM_MST: stopping TM on aconnector: %p [id: %d]\n",
aconnector, aconnector->base.base.id); aconnector, aconnector->base.base.id);
if (aconnector->mst_mgr.mst_state == true) if (aconnector->mst_mgr.mst_state == true) {
drm_dp_mst_topology_mgr_set_mst(&aconnector->mst_mgr, false); drm_dp_mst_topology_mgr_set_mst(&aconnector->mst_mgr, false);
for (i = 0; i < MAX_SINKS_PER_LINK; i++) {
if (link->remote_sinks[i] == NULL)
continue;
if (link->remote_sinks[i]->sink_signal ==
SIGNAL_TYPE_DISPLAY_PORT_MST) {
dc_link_remove_remote_sink(link, link->remote_sinks[i]);
if (aconnector->dc_sink) {
dc_sink_release(aconnector->dc_sink);
aconnector->dc_sink = NULL;
aconnector->dc_link->cur_link_settings.lane_count = 0;
}
}
}
}
} }
bool dm_helpers_dp_read_dpcd( bool dm_helpers_dp_read_dpcd(
......
...@@ -113,7 +113,7 @@ bool dm_helpers_dp_mst_start_top_mgr( ...@@ -113,7 +113,7 @@ bool dm_helpers_dp_mst_start_top_mgr(
void dm_helpers_dp_mst_stop_top_mgr( void dm_helpers_dp_mst_stop_top_mgr(
struct dc_context *ctx, struct dc_context *ctx,
const struct dc_link *link); struct dc_link *link);
/** /**
* OS specific aux read callback. * OS specific aux read callback.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment