diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0706-drm-amd-dal-Reset-DP_MSE_SAT-when-disabling-MST-disp.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0706-drm-amd-dal-Reset-DP_MSE_SAT-when-disabling-MST-disp.patch | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0706-drm-amd-dal-Reset-DP_MSE_SAT-when-disabling-MST-disp.patch b/common/recipes-kernel/linux/files/0706-drm-amd-dal-Reset-DP_MSE_SAT-when-disabling-MST-disp.patch new file mode 100644 index 00000000..01d71231 --- /dev/null +++ b/common/recipes-kernel/linux/files/0706-drm-amd-dal-Reset-DP_MSE_SAT-when-disabling-MST-disp.patch @@ -0,0 +1,89 @@ +From 0294e1dd47e242d58e815adc9916df03f42b475e Mon Sep 17 00:00:00 2001 +From: Harry Wentland <harry.wentland@amd.com> +Date: Wed, 13 Jan 2016 22:44:36 -0500 +Subject: [PATCH 0706/1110] drm/amd/dal: Reset DP_MSE_SAT when disabling MST + display + +SST display doesn't reliably light up when DP_MSE_SAT registers are +set. Make sure we clear those when disabling an MST display. + +Signed-off-by: Harry Wentland <harry.wentland@amd.com> +Acked-by: Harry Wentland <harry.wentland@amd.com> +--- + drivers/gpu/drm/amd/dal/dc/core/dc_link.c | 20 ++++++++++++-------- + drivers/gpu/drm/amd/dal/dc/core/dc_link_dp.c | 6 ++++-- + 2 files changed, 16 insertions(+), 10 deletions(-) + +diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c +index 46132f2..c8419a8 100644 +--- a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c ++++ b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c +@@ -1416,6 +1416,7 @@ static enum dc_status deallocate_mst_payload(struct core_stream *stream) + struct fixed31_32 avg_time_slots_per_mtp = dal_fixed31_32_from_int(0); + struct dc *dc = stream->ctx->dc; + uint8_t i; ++ bool mst_mode = (link->public.type == dc_connection_mst_branch); + + /* deallocate_mst_payload is called before disable link. When mode or + * disable/enable monitor, new stream is created which is not in link +@@ -1430,12 +1431,13 @@ static enum dc_status deallocate_mst_payload(struct core_stream *stream) + avg_time_slots_per_mtp); + + /* TODO: which component is responsible for remove payload table? */ +- dc_helpers_dp_mst_write_payload_allocation_table( +- stream->ctx, +- &stream->public, +- &link->stream_alloc_table, +- &proposed_table, +- false); ++ if (mst_mode) ++ dc_helpers_dp_mst_write_payload_allocation_table( ++ stream->ctx, ++ &stream->public, ++ &link->stream_alloc_table, ++ &proposed_table, ++ false); + + dal_logger_write(link->ctx->logger, + LOG_MAJOR_MST, +@@ -1466,14 +1468,16 @@ static enum dc_status deallocate_mst_payload(struct core_stream *stream) + + link->stream_alloc_table = proposed_table; + +- dc_helpers_dp_mst_poll_for_allocation_change_trigger( ++ if (mst_mode) { ++ dc_helpers_dp_mst_poll_for_allocation_change_trigger( + stream->ctx, + &stream->public); + +- dc_helpers_dp_mst_send_payload_allocation( ++ dc_helpers_dp_mst_send_payload_allocation( + stream->ctx, + &stream->public, + false); ++ } + + return DC_OK; + } +diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_link_dp.c b/drivers/gpu/drm/amd/dal/dc/core/dc_link_dp.c +index eaea78e..c4cbede 100644 +--- a/drivers/gpu/drm/amd/dal/dc/core/dc_link_dp.c ++++ b/drivers/gpu/drm/amd/dal/dc/core/dc_link_dp.c +@@ -989,10 +989,12 @@ static bool perform_clock_recovery_sequence( + dal_logger_write(link->ctx->logger, + LOG_MAJOR_MST, + LOG_MINOR_MST_PROGRAMMING, +- "Link training for %d lanes at %s rate %s\n", ++ "Link training for %d lanes at %s rate %s with PE %d, VS %d\n", + lt_settings.link_settings.lane_count, + link_rate, +- status ? "succeeded" : "failed"); ++ status ? "succeeded" : "failed", ++ lt_settings.lane_settings[0].PRE_EMPHASIS, ++ lt_settings.lane_settings[0].VOLTAGE_SWING); + + return status; + } +-- +2.7.4 + |