[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1473602239-15855-1-git-send-email-adrienverge@gmail.com>
Date: Sun, 11 Sep 2016 15:57:19 +0200
From: Adrien Vergé <adrienverge@...il.com>
To: Ville Syrjälä
<ville.syrjala@...ux.intel.com>,
Daniel Vetter <daniel.vetter@...el.com>,
Jani Nikula <jani.nikula@...ux.intel.com>,
David Airlie <airlied@...ux.ie>
Cc: intel-gfx@...ts.freedesktop.org, dri-devel@...ts.freedesktop.org,
linux-kernel@...r.kernel.org,
Adrien Vergé <adrienverge@...il.com>
Subject: [PATCH] drm/i915: Ignore OpRegion panel type on Ivy Bridge + Mobile
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@...il.com>
Signed-off-by: Adrien Vergé <adrienverge@...il.com>
---
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
Powered by blists - more mailing lists