aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/0987-drm-amd-display-Fix-two-MST-not-light-up-regressions.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/0987-drm-amd-display-Fix-two-MST-not-light-up-regressions.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/0987-drm-amd-display-Fix-two-MST-not-light-up-regressions.patch81
1 files changed, 81 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/0987-drm-amd-display-Fix-two-MST-not-light-up-regressions.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/0987-drm-amd-display-Fix-two-MST-not-light-up-regressions.patch
new file mode 100644
index 00000000..dea227dc
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/0987-drm-amd-display-Fix-two-MST-not-light-up-regressions.patch
@@ -0,0 +1,81 @@
+From e0dc0c4ec53de6cfcad4425008e4b320039fd39e Mon Sep 17 00:00:00 2001
+From: Jerry Zuo <Jerry.Zuo@amd.com>
+Date: Thu, 17 Aug 2017 16:05:37 -0400
+Subject: [PATCH 0987/4131] drm/amd/display: Fix two MST not light up
+ regressions
+
+1. Change 100104: Move verify link cap after read edid causes MST
+ link_cap struct not being set. It leads to zero denominator
+ pbn_per_slot value, leading to the crash at
+ dal_fixed31_32_div(). Skip MST link training for now and will
+ need to add MST specific link traning routine later.
+
+2. Change 98822: Adding edp supports changes link setting
+ condition from max_link to verified_link. It leads to MST is
+ getting wrong link settings.
+ e.g. LINK_SPREAD_05_DOWNSPREAD_30KHZ not set in MST case
+
+Signed-off-by: Jerry Zuo <Jerry.Zuo@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Acked-by: Harry Wentland <Harry.Wentland@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/core/dc_link.c | 16 +++++++++-------
+ drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 8 ++++++++
+ 2 files changed, 17 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
+index cab54af..ee9b984 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
+@@ -607,6 +607,12 @@ bool dc_link_detect(struct dc_link *link, bool boot)
+ if (link->type == dc_connection_mst_branch) {
+ LINK_INFO("link=%d, mst branch is now Connected\n",
+ link->link_index);
++ /* Need to setup mst link_cap struct here
++ * otherwise dc_link_detect() will leave mst link_cap
++ * empty which leads to allocate_mst_payload() has "0"
++ * pbn_per_slot value leading to exception on dal_fixed31_32_div()
++ */
++ link->verified_link_cap = link->reported_link_cap;
+ return false;
+ }
+
+@@ -672,13 +678,9 @@ bool dc_link_detect(struct dc_link *link, bool boot)
+ * TODO debug why Dell 2413 doesn't like
+ * two link trainings
+ */
+- if (is_mst_supported(link)) {
+- link->verified_link_cap =
+- link->reported_link_cap;
+- } else {
+- dp_hbr_verify_link_cap(link,
+- &link->reported_link_cap);
+- }
++
++ /* deal with non-mst cases */
++ dp_hbr_verify_link_cap(link, &link->reported_link_cap);
+ }
+
+ /* HDMI-DVI Dongle */
+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 d621237..e35bdce 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
+@@ -1459,6 +1459,14 @@ void decide_link_settings(struct dc_stream_state *stream,
+ return;
+ }
+
++ /* MST doesn't perform link training for now
++ * TODO: add MST specific link training routine
++ */
++ if (is_mst_supported(link)) {
++ *link_setting = link->verified_link_cap;
++ return;
++ }
++
+ /* search for the minimum link setting that:
+ * 1. is supported according to the link training result
+ * 2. could support the b/w requested by the timing
+--
+2.7.4
+