diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1647-drm-amd-display-Link-train-only-when-link-is-DP-and-.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/1647-drm-amd-display-Link-train-only-when-link-is-DP-and-.patch | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1647-drm-amd-display-Link-train-only-when-link-is-DP-and-.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1647-drm-amd-display-Link-train-only-when-link-is-DP-and-.patch new file mode 100644 index 00000000..8453eee0 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1647-drm-amd-display-Link-train-only-when-link-is-DP-and-.patch @@ -0,0 +1,57 @@ +From 6a8949a069d58af0dd39de2ede344c005dee5622 Mon Sep 17 00:00:00 2001 +From: Samson Tam <Samson.Tam@amd.com> +Date: Mon, 4 Mar 2019 16:21:06 -0500 +Subject: [PATCH 1647/2940] drm/amd/display: Link train only when link is DP + and backend is enabled + +[Why] +In certain cases we do link training when we don't have a backend. + +[How] +In dc_link_set_preferred_link_settings(), store preferred link settings +first and then verify that the link is DP and the link stream's backend is +enabled. If either is false, then we will not do any link retraining. + +Change-Id: I0af4250f00b5fb229d336294581d914584dbacbb +Signed-off-by: Samson Tam <Samson.Tam@amd.com> +Reviewed-by: Aric Cyr <Aric.Cyr@amd.com> +Acked-by: Anthony Koo <Anthony.Koo@amd.com> +Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com> +--- + drivers/gpu/drm/amd/display/dc/core/dc.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c +index 5c3da56d0692..9a9cdb7f91a2 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc.c +@@ -530,6 +530,14 @@ void dc_link_set_preferred_link_settings(struct dc *dc, + struct dc_stream_state *link_stream; + struct dc_link_settings store_settings = *link_setting; + ++ link->preferred_link_setting = store_settings; ++ ++ /* Retrain with preferred link settings only relevant for ++ * DP signal type ++ */ ++ if (!dc_is_dp_signal(link->connector_signal)) ++ return; ++ + for (i = 0; i < MAX_PIPES; i++) { + pipe = &dc->current_state->res_ctx.pipe_ctx[i]; + if (pipe->stream && pipe->stream->link) { +@@ -544,7 +552,10 @@ void dc_link_set_preferred_link_settings(struct dc *dc, + + link_stream = link->dc->current_state->res_ctx.pipe_ctx[i].stream; + +- link->preferred_link_setting = store_settings; ++ /* Cannot retrain link if backend is off */ ++ if (link_stream->dpms_off) ++ return; ++ + if (link_stream) + decide_link_settings(link_stream, &store_settings); + +-- +2.17.1 + |