Commit 73c72602 authored by Hersen Wu's avatar Hersen Wu Committed by Alex Deucher

drm/amd/display: Fix link retraining hw sequence for auto test

Signed-off-by: default avatarHersen Wu <hersenxs.wu@amd.com>
Reviewed-by: default avatarHarry Wentland <Harry.Wentland@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 88639168
...@@ -366,9 +366,7 @@ static void set_preferred_link_settings(struct dc *dc, ...@@ -366,9 +366,7 @@ static void set_preferred_link_settings(struct dc *dc,
link_setting->lane_count; link_setting->lane_count;
core_link->public.verified_link_cap.link_rate = core_link->public.verified_link_cap.link_rate =
link_setting->link_rate; link_setting->link_rate;
dp_retrain_link_physi(core_link, dp_retrain_link_dp_test(core_link, link_setting, false);
link_setting,
false);
} }
static void enable_hpd(const struct dc_link *link) static void enable_hpd(const struct dc_link *link)
......
...@@ -1532,7 +1532,7 @@ static bool handle_hpd_irq_psr_sink(const struct core_link *link) ...@@ -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) 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( core_link_read_dpcd(
link, link,
...@@ -1549,7 +1549,7 @@ static void dp_test_send_link_training(struct core_link *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.lane_count = link_settings.lane_count;
link->public.verified_link_cap.link_rate = link_settings.link_rate; 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) static void dp_test_send_phy_test_pattern(struct core_link *link)
......
...@@ -200,28 +200,7 @@ void dp_set_hw_test_pattern( ...@@ -200,28 +200,7 @@ void dp_set_hw_test_pattern(
encoder->funcs->dp_set_phy_pattern(encoder, &pattern_param); encoder->funcs->dp_set_phy_pattern(encoder, &pattern_param);
} }
void dp_retrain_link(struct core_link *link) void dp_retrain_link_dp_test(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,
struct dc_link_settings *link_setting, struct dc_link_settings *link_setting,
bool skip_video_pattern) bool skip_video_pattern)
{ {
...@@ -240,6 +219,10 @@ void dp_retrain_link_physi(struct core_link *link, ...@@ -240,6 +219,10 @@ void dp_retrain_link_physi(struct core_link *link,
pipes[i].stream_enc->funcs->dp_blank( pipes[i].stream_enc->funcs->dp_blank(
pipes[i].stream_enc); 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); dp_receiver_power_ctrl(link, false);
link->link_enc->funcs->disable_output( link->link_enc->funcs->disable_output(
......
...@@ -68,9 +68,7 @@ void dp_set_hw_test_pattern( ...@@ -68,9 +68,7 @@ void dp_set_hw_test_pattern(
enum dp_panel_mode dp_get_panel_mode(struct core_link *link); enum dp_panel_mode dp_get_panel_mode(struct core_link *link);
void dp_retrain_link(struct core_link *link); void dp_retrain_link_dp_test(struct core_link *link,
void dp_retrain_link_physi(struct core_link *link,
struct dc_link_settings *link_setting, struct dc_link_settings *link_setting,
bool skip_video_pattern); bool skip_video_pattern);
......
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