[Intel-gfx] [PATCH] drm/i915: Disable LVDS while modesetting for HD+ panels

Takashi Iwai tiwai at suse.de
Mon Jul 2 18:14:54 CEST 2012


Some SNB/IVY Laptops with 1600x900 HD+ panel (e.g. Dell Latitude E6420
and HP ProBook 65xx) are known to show the whole black/white garbage
or flickering screens while starting up or changing the mode.
This can be worked around by disabling LVDS off while changing the
mode.

Since this doesn't give any visible drawback on machines I've tested,
enable it generically for HD+ panels for SCH-split case.

Tested-by: Giacomo Comes <comes at naic.edu>
Cc: <stable at vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai at suse.de>
---
 drivers/gpu/drm/i915/intel_lvds.c |   25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 08eb04c..cf1c150 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -407,13 +407,26 @@ out:
 static void intel_lvds_prepare(struct drm_encoder *encoder)
 {
 	struct intel_lvds *intel_lvds = to_intel_lvds(encoder);
+	bool do_disable = false;
 
-	/*
-	 * Prior to Ironlake, we must disable the pipe if we want to adjust
-	 * the panel fitter. However at all other times we can just reset
-	 * the registers regardless.
-	 */
-	if (!HAS_PCH_SPLIT(encoder->dev) && intel_lvds->pfit_dirty)
+	if (HAS_PCH_SPLIT(encoder->dev)) {
+		/* Some HD+ panels require the pipe-off while mode changing;
+		 * otherwise you'll get B/W garbage or sustaining flickering
+		 * screen
+		 */
+		if (intel_lvds->fixed_mode->hdisplay >= 1600 &&
+		    intel_lvds->fixed_mode->vdisplay >= 900)
+			do_disable = true;
+	} else {
+		/*
+		 * Prior to Ironlake, we must disable the pipe if we want to
+		 * adjust the panel fitter. However at all other times we can
+		 * just reset the registers regardless.
+		 */
+		do_disable = intel_lvds->pfit_dirty;
+	}
+
+	if (do_disable)
 		intel_lvds_disable(intel_lvds);
 }
 
-- 
1.7.10.4




More information about the Intel-gfx mailing list