[SRU LUCID] Bug#554569 Blank screen with KMS on Thinkpad X201 with Arrandale (i915)

Manoj Iyer manoj.iyer at canonical.com
Tue Aug 3 19:34:55 UTC 2010


BUG
===
Blank screen with KMS on Thinkpad X201 with Arrandale (i915)
http://launchpad.net/bugs/554569

SRU JUSTFICATION
================
This patch fixes the issue with Thinkpad X201 with Arrandale (i915), it is 
a critical patch needed to enable Thinkpad X201.

TESTING
=======
The patch was tested by vanhoof at canonical and Thomas Uehlinger details of 
the test results can be found towards the end of the bug report.

PATCH
=====
This patch is cherry picked from 2.6.34.y GKH stable tree. It applies 
cleanly to Lucid. It is a 2 line patch that applies to 
drivers/gpu/drm/i915/intel_display.c . Please consider for Lucid SRU.

The following changes since commit 
4d59634f6e1a9731f9f47979ef1af20007b866fe:
   Adam Jackson (1):
         drm/i915: Make G4X-style PLL search more permissive

are available in the git repository at:


git://kernel.ubuntu.com/git/manjo/ubuntu-lucid.git lp554569


>From 4d59634f6e1a9731f9f47979ef1af20007b866fe Mon Sep 17 00:00:00 2001
From: Adam Jackson <ajax at redhat.com>
Date: Fri, 2 Jul 2010 16:43:30 -0400
Subject: [PATCH] drm/i915: Make G4X-style PLL search more permissive

commit 6ba770dc5c334aff1c055c8728d34656e0f091e2 upstream.

Fixes an Ironlake laptop with a 68.940MHz 1280x800 panel and 120MHz SSC
reference clock.

More generally, the 0.488% tolerance used before is just too tight to
reliably find a PLL setting.  I extracted the search algorithm and
modified it to find the dot clocks with maximum error over the valid
range for the given output type:

http://people.freedesktop.org/~ajax/intel_g4x_find_best_pll.c

This gave:

Worst dotclock for Ironlake DAC refclk is 350000kHz (error 0.00571)
Worst dotclock for Ironlake SL-LVDS refclk is 102321kHz (error 0.00524)
Worst dotclock for Ironlake DL-LVDS refclk is 219642kHz (error 0.00488)
Worst dotclock for Ironlake SL-LVDS SSC refclk is 84374kHz (error 0.00529)
Worst dotclock for Ironlake DL-LVDS SSC refclk is 183035kHz (error 0.00488)
Worst dotclock for G4X SDVO refclk is 267600kHz (error 0.00448)
Worst dotclock for G4X HDMI refclk is 334400kHz (error 0.00478)
Worst dotclock for G4X SL-LVDS refclk is 95571kHz (error 0.00449)
Worst dotclock for G4X DL-LVDS refclk is 224000kHz (error 0.00510)

Signed-off-by: Adam Jackson <ajax at redhat.com>
Signed-off-by: Eric Anholt <eric at anholt.net>
Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>

(cherry picked from commit d4e0018e3e4dd685af25d300fd26a0d5a984482e)

Signed-off-by: Manoj Iyer <manoj.iyer at canonical.com>

Buglink: http://launchpad.net/bugs/554569
---
  drivers/gpu/drm/i915/intel_display.c |    4 ++--
  1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 2d1ac14..7c89b83 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -879,8 +879,8 @@ intel_g4x_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc,
  	intel_clock_t clock;
  	int max_n;
  	bool found;
-	/* approximately equals target * 0.00488 */
-	int err_most = (target >> 8) + (target >> 10);
+	/* approximately equals target * 0.00585 */
+	int err_most = (target >> 8) + (target >> 9);
  	found = false;

  	if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) {
-- 
1.7.0.4


Cheers
--- manjo




More information about the kernel-team mailing list