aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0114-drm-amd-display-Fix-link-retraining-hw-sequence-for-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0114-drm-amd-display-Fix-link-retraining-hw-sequence-for-.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0114-drm-amd-display-Fix-link-retraining-hw-sequence-for-.patch116
1 files changed, 116 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0114-drm-amd-display-Fix-link-retraining-hw-sequence-for-.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0114-drm-amd-display-Fix-link-retraining-hw-sequence-for-.patch
new file mode 100644
index 00000000..738d6250
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0114-drm-amd-display-Fix-link-retraining-hw-sequence-for-.patch
@@ -0,0 +1,116 @@
+From 64b649acb0163527dee610780fda781f4440d393 Mon Sep 17 00:00:00 2001
+From: Hersen Wu <hersenxs.wu@amd.com>
+Date: Thu, 29 Dec 2016 14:58:54 -0500
+Subject: [PATCH 0114/4131] drm/amd/display: Fix link retraining hw sequence
+ for auto test
+
+Signed-off-by: Hersen Wu <hersenxs.wu@amd.com>
+Reviewed-by: Harry Wentland <Harry.Wentland@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/core/dc.c | 4 +---
+ drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 4 ++--
+ drivers/gpu/drm/amd/display/dc/core/dc_link_hwss.c | 27 ++++------------------
+ drivers/gpu/drm/amd/display/dc/inc/link_hwss.h | 4 +---
+ 4 files changed, 9 insertions(+), 30 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
+index ad1ce60..a7c6c98 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
+@@ -366,9 +366,7 @@ static void set_preferred_link_settings(struct dc *dc,
+ link_setting->lane_count;
+ core_link->public.verified_link_cap.link_rate =
+ link_setting->link_rate;
+- dp_retrain_link_physi(core_link,
+- link_setting,
+- false);
++ dp_retrain_link_dp_test(core_link, link_setting, false);
+ }
+
+ static void enable_hpd(const struct dc_link *link)
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
+index a4b6a6a..3d5871d 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
+@@ -1532,7 +1532,7 @@ static bool handle_hpd_irq_psr_sink(const struct core_link *link)
+
+ static void dp_test_send_link_training(struct core_link *link)
+ {
+- struct dc_link_settings link_settings;
++ struct dc_link_settings link_settings = {0};
+
+ core_link_read_dpcd(
+ link,
+@@ -1549,7 +1549,7 @@ static void dp_test_send_link_training(struct core_link *link)
+ link->public.verified_link_cap.lane_count = link_settings.lane_count;
+ link->public.verified_link_cap.link_rate = link_settings.link_rate;
+
+- dp_retrain_link(link);
++ dp_retrain_link_dp_test(link, &link_settings, false);
+ }
+
+ static void dp_test_send_phy_test_pattern(struct core_link *link)
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link_hwss.c b/drivers/gpu/drm/amd/display/dc/core/dc_link_hwss.c
+index f870a0e..e287584 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_link_hwss.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_hwss.c
+@@ -200,28 +200,7 @@ void dp_set_hw_test_pattern(
+ encoder->funcs->dp_set_phy_pattern(encoder, &pattern_param);
+ }
+
+-void dp_retrain_link(struct core_link *link)
+-{
+- struct pipe_ctx *pipes = link->dc->current_context->res_ctx.pipe_ctx;
+- unsigned int i;
+-
+- for (i = 0; i < MAX_PIPES; i++) {
+- if (pipes[i].stream_enc != NULL) {
+- dm_delay_in_microseconds(link->ctx, 100);
+- pipes->stream_enc->funcs->dp_blank(pipes[i].stream_enc);
+- link->dc->hwss.disable_stream(&pipes[i]);
+- dc_link_dp_perform_link_training(
+- &link->public,
+- &link->public.verified_link_cap,
+- true);
+- link->dc->hwss.enable_stream(&pipes[i]);
+- link->dc->hwss.unblank_stream(&pipes[i],
+- &link->public.verified_link_cap);
+- }
+- }
+-}
+-
+-void dp_retrain_link_physi(struct core_link *link,
++void dp_retrain_link_dp_test(struct core_link *link,
+ struct dc_link_settings *link_setting,
+ bool skip_video_pattern)
+ {
+@@ -240,6 +219,10 @@ void dp_retrain_link_physi(struct core_link *link,
+ pipes[i].stream_enc->funcs->dp_blank(
+ pipes[i].stream_enc);
+
++ /* disable any test pattern that might be active */
++ dp_set_hw_test_pattern(link,
++ DP_TEST_PATTERN_VIDEO_MODE, NULL, 0);
++
+ dp_receiver_power_ctrl(link, false);
+
+ link->link_enc->funcs->disable_output(
+diff --git a/drivers/gpu/drm/amd/display/dc/inc/link_hwss.h b/drivers/gpu/drm/amd/display/dc/inc/link_hwss.h
+index 30831c5..75d10e9 100644
+--- a/drivers/gpu/drm/amd/display/dc/inc/link_hwss.h
++++ b/drivers/gpu/drm/amd/display/dc/inc/link_hwss.h
+@@ -68,9 +68,7 @@ void dp_set_hw_test_pattern(
+
+ enum dp_panel_mode dp_get_panel_mode(struct core_link *link);
+
+-void dp_retrain_link(struct core_link *link);
+-
+-void dp_retrain_link_physi(struct core_link *link,
++void dp_retrain_link_dp_test(struct core_link *link,
+ struct dc_link_settings *link_setting,
+ bool skip_video_pattern);
+
+--
+2.7.4
+