[SRU,linux-oem,v2,11/16] drm/i915/cnl: Don't trust VBT's alternate pin for port D for now.

Message ID 20180131060944.30357-12-kai.heng.feng@canonical.com
State New
Headers show
Series
  • Fix out of bound VBT pin on CNP
Related show

Commit Message

Kai-Heng Feng Jan. 31, 2018, 6:09 a.m.
From: Rodrigo Vivi <rodrigo.vivi@intel.com>

BugLink: https://bugs.launchpad.net/bugs/1746411

Cannon Lake's VBT that is currently available for B0 stepping
states that port D uses alternate pin 3 messing up with the
default pin-port mapping table. Using that information we cannot
get HDMI working properly. So for now we don't relly on VBT for
this information.

Cc: Clint Taylor <clinton.a.taylor@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Clinton Taylor <clinton.a.taylor@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1499375295-6454-1-git-send-email-rodrigo.vivi@intel.com
(cherry picked from commit 75be7756bc21ac1f9f3082850deff809ac3c5d0c)
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
 drivers/gpu/drm/i915/intel_bios.c | 9 +++++++++
 1 file changed, 9 insertions(+)

Patch

diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
index 5acc2c6298d4..d7d3fc0373e9 100644
--- a/drivers/gpu/drm/i915/intel_bios.c
+++ b/drivers/gpu/drm/i915/intel_bios.c
@@ -1197,6 +1197,15 @@  static void parse_ddi_port(struct drm_i915_private *dev_priv, enum port port,
 	if (is_dvi) {
 		info->alternate_ddc_pin = ddc_pin;
 
+		/*
+		 * All VBTs that we got so far for B Stepping has this
+		 * information wrong for Port D. So, let's just ignore for now.
+		 */
+		if (IS_CNL_REVID(dev_priv, CNL_REVID_B0, CNL_REVID_B0) &&
+		    port == PORT_D) {
+			info->alternate_ddc_pin = 0;
+		}
+
 		sanitize_ddc_pin(dev_priv, port);
 	}