aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/0964-drm-amd-display-Don-t-skip-link-training-for-empty-d.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0964-drm-amd-display-Don-t-skip-link-training-for-empty-d.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/0964-drm-amd-display-Don-t-skip-link-training-for-empty-d.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0964-drm-amd-display-Don-t-skip-link-training-for-empty-d.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0964-drm-amd-display-Don-t-skip-link-training-for-empty-d.patch
new file mode 100644
index 00000000..0c34cda3
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/0964-drm-amd-display-Don-t-skip-link-training-for-empty-d.patch
@@ -0,0 +1,60 @@
+From 6c4a258ac11941ee18354cb8b2b8b923803f061e Mon Sep 17 00:00:00 2001
+From: Eric Yang <Eric.Yang2@amd.com>
+Date: Fri, 23 Nov 2018 05:55:20 -0500
+Subject: [PATCH 0964/2940] drm/amd/display: Don't skip link training for empty
+ dongle
+
+[Why]
+Skipping initial link training will result in no verified link cap for
+mode enumeration. Some versions of the BIOS seem to have PHY programming
+sequence issue as well if initial link training is skipped, resulting in
+a softlock in BIOS command table.
+
+[How]
+Identify the empty dongle hotplug case, and still do initial link
+training.
+
+Signed-off-by: Eric Yang <Eric.Yang2@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Acked-by: Leo Li <sunpeng.li@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/core/dc_link.c | 18 ++++++++++++++++--
+ 1 file changed, 16 insertions(+), 2 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 1bebb60ac629..30ab9b7a161c 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
+@@ -706,12 +706,26 @@ bool dc_link_detect(struct dc_link *link, enum dc_detect_reason reason)
+ if (memcmp(&link->dpcd_caps, &prev_dpcd_caps, sizeof(struct dpcd_caps)))
+ same_dpcd = false;
+ }
+- /* Active dongle downstream unplug */
++ /* Active dongle plug in without display or downstream unplug*/
+ if (link->type == dc_connection_active_dongle
+ && link->dpcd_caps.sink_count.
+ bits.SINK_COUNT == 0) {
+- if (prev_sink != NULL)
++ if (prev_sink != NULL) {
++ /* Downstream unplug */
+ dc_sink_release(prev_sink);
++ } else {
++ /* Empty dongle plug in */
++ for (i = 0; i < LINK_TRAINING_MAX_VERIFY_RETRY; i++) {
++ int fail_count = 0;
++
++ dp_verify_link_cap(link,
++ &link->reported_link_cap,
++ &fail_count);
++
++ if (fail_count == 0)
++ break;
++ }
++ }
+ return true;
+ }
+
+--
+2.17.1
+