[PATCH] drm/i915: Ignore OpRegion panel type on Ivy Bridge + Mobile

From: Adrien VergÃ
Date: Sun Sep 11 2016 - 09:57:48 EST


On Terra Mobile Ultrabook 1450 II (Core i5-3337U, i915 devid = 0x166),
the screen is tiled in many 480Ã320 screens (like a mosaic) since v4.7.
This laptop is simply unusable.

I have bisected the cause to commit a05628195a0d ("drm/i915: Get
panel_type from OpRegion panel details").

Like for Skylake, it seems that using the OpRegion panel type (here, 0)
causes the problem, whereas the VBT panel type (here, 7) gives a normal
display. See commit aeddda06c1a7 ("drm/i915: Ignore panel type from
OpRegion on SKL") for background on this Skylake fix.

This patch ignores OpRegion panel type for Ivy Bridge + Mobile chips.

Tested-by: Adrien Vergà <adrienverge@xxxxxxxxx>
Signed-off-by: Adrien Vergà <adrienverge@xxxxxxxxx>
---
drivers/gpu/drm/i915/intel_opregion.c | 11 +++++++++++
1 file changed, 11 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
index adca262..94e2db7 100644
--- a/drivers/gpu/drm/i915/intel_opregion.c
+++ b/drivers/gpu/drm/i915/intel_opregion.c
@@ -1083,5 +1083,16 @@ intel_opregion_get_panel_type(struct drm_i915_private *dev_priv)
return -ENODEV;
}

+ /*
+ * FIXME On Terra Mobile Ultrabook 1450 II (Intel Core i5-3337U) the
+ * OpRegion panel type (0) results in tiled ("mosaic") display bug,
+ * whereas the VBT panel type (7) gives a normal display.
+ * Let's ignore the OpRegion panel type for this chip.
+ */
+ if (IS_IVYBRIDGE(dev_priv) && IS_MOBILE(dev_priv)) {
+ DRM_DEBUG_KMS("Ignoring OpRegion panel type (%d)\n", ret - 1);
+ return -ENODEV;
+ }
+
return ret - 1;
}
--
2.7.4