[PATCH][Quantal] UBUNTU: SAUCE: i915_hsw: don't send DP "idle" pattern before "normal" on HSW PORT_A

James M Leddy james.leddy at canonical.com
Wed Mar 6 00:46:15 UTC 2013


From: Paulo Zanoni <paulo.r.zanoni at intel.com>

To the OEMs, IHVs, and eventually end users, this message is
scary. The reason is because this is written every time a laptop
resumes, so if the driver fails for some other reason, then this is
the only message you see.

Buglink: https://bugs.launchpad.net/bugs/1138700

cherry-picked-from: 10aa17c86f0de1fd902f7b8ee487a3682d7401df

Original commit message follows:

The DP_TP_STATUS register for PORT_A doesn't exist. Our documentation
will be fixed soon, so the code does not match it for now.

This solves "Timed out waiting for DP idle patterns" and "unclaimed
register" messages on eDP.

V1: Was called "drm/i915: don't read DP_TP_STATUS(PORT_A)"
V2: Was called "drm/i915: don't send DP idle pattern before normal
pattern on HSW"
V3: Only change the code that touches PORT_A.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni at intel.com>
Reviewed-by: Jani Nikula <jani.nikula at intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
Signed-off-by: James M Leddy <james.leddy at canonical.com>
---
 ubuntu/i915/intel_dp.c |   16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/ubuntu/i915/intel_dp.c b/ubuntu/i915/intel_dp.c
index 295d21e..f46d47b 100644
--- a/ubuntu/i915/intel_dp.c
+++ b/ubuntu/i915/intel_dp.c
@@ -1697,14 +1697,18 @@ intel_dp_set_link_train(struct intel_dp *intel_dp,
 		temp &= ~DP_TP_CTL_LINK_TRAIN_MASK;
 		switch (dp_train_pat & DP_TRAINING_PATTERN_MASK) {
 		case DP_TRAINING_PATTERN_DISABLE:
-			temp |= DP_TP_CTL_LINK_TRAIN_IDLE;
-			I915_WRITE(DP_TP_CTL(port), temp);
 
-			if (wait_for((I915_READ(DP_TP_STATUS(port)) &
-				      DP_TP_STATUS_IDLE_DONE), 1))
-				DRM_ERROR("Timed out waiting for DP idle patterns\n");
+			if (port != PORT_A) {
+				temp |= DP_TP_CTL_LINK_TRAIN_IDLE;
+				I915_WRITE(DP_TP_CTL(port), temp);
+
+				if (wait_for((I915_READ(DP_TP_STATUS(port)) &
+					      DP_TP_STATUS_IDLE_DONE), 1))
+					DRM_ERROR("Timed out waiting for DP idle patterns\n");
+
+				temp &= ~DP_TP_CTL_LINK_TRAIN_MASK;
+			}
 
-			temp &= ~DP_TP_CTL_LINK_TRAIN_MASK;
 			temp |= DP_TP_CTL_LINK_TRAIN_NORMAL;
 
 			break;
-- 
1.7.9.5





More information about the kernel-team mailing list