Blob Blame History Raw
From: Wenjing Liu <Wenjing.Liu@amd.com>
Date: Thu, 3 Aug 2017 13:57:05 -0400
Subject: drm/amd/display: Move verify link cap after read edid
Git-commit: f334073ae31eaee742811e6ca282622aad5844ad
Patch-mainline: v4.15-rc1
References: FATE#326289 FATE#326079 FATE#326049 FATE#322398 FATE#326166

DP link layer test 400.1.1 fails intermittently.
The test device will pull hpd low immediately
after verify link cap.
Driver reads edid when hpd low that causes the test to fail.

Move read edid before verify link cap, so driver will
read edid before starting link training

Signed-off-by: Wenjing Liu <Wenjing.Liu@amd.com>
Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
Acked-by: Harry Wentland <Harry.Wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Petr Tesarik <ptesarik@suse.com>
---
 drivers/gpu/drm/amd/display/dc/core/dc_link.c    |   16 ++++++++++++++++
 drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c |    7 -------
 2 files changed, 16 insertions(+), 7 deletions(-)

--- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
@@ -666,6 +666,22 @@ bool dc_link_detect(struct dc_link *link
 			break;
 		}
 
+		if (link->connector_signal == SIGNAL_TYPE_DISPLAY_PORT &&
+			sink_caps.transaction_type ==
+			DDC_TRANSACTION_TYPE_I2C_OVER_AUX) {
+			/*
+			 * 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);
+			}
+		}
+
 		/* HDMI-DVI Dongle */
 		if (sink->sink_signal == SIGNAL_TYPE_HDMI_TYPE_A &&
 				!sink->edid_caps.edid_hdmi)
--- a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
@@ -2283,13 +2283,6 @@ void detect_dp_sink_caps(struct dc_link
 	 * DP, hw_init may need check signal or power up
 	 * encoder here.
 	 */
-
-	if (is_mst_supported(link)) {
-		link->verified_link_cap = link->reported_link_cap;
-	} else {
-		dp_hbr_verify_link_cap(link,
-			&link->reported_link_cap);
-	}
 	/* TODO save sink caps in link->sink */
 }