aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0706-drm-amd-dal-Reset-DP_MSE_SAT-when-disabling-MST-disp.patch
diff options
context:
space:
mode:
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.patch89
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
+