[Intel-gfx] Thinkpad T420 and single/dual channel lvds

Takashi Iwai tiwai at suse.de
Wed Mar 14 17:44:40 CET 2012

At Wed, 14 Mar 2012 10:45:06 -0400,
Adam Jackson wrote:
> [1  <multipart/signed (7bit)>]
> [1.1  <text/plain; UTF-8 (quoted-printable)>]
> On Wed, 2012-03-14 at 13:37 +0100, Helge Bahmann wrote:
> > Hi everyone,
> > 
> > Booting a Thinkpad T420 with the lid closed results and opening it subsequently results in an 
> > unusable picture on the panel (and no amount of resetting makes it usable): The even pixels show 
> > the nominal content of the framebuffer (with the right half missing) whlie the odd pixels show a 
> > red-/blueish flicker.
> > 
> > A little bit of investigation revealed that with the lid closed on boot, the panel ends up driven in 
> > lvds single channel mode, which the panel probably does not like. It appears that the i915 driver 
> > relies on the BIOS setting up the PCH_LVDS register for dual channel and will otherwise not ever 
> > consider switching.
> > 
> > While the following hack makes my display work, it is quite obviously not the right thing to do -- 
> > could you investigate if there is a "proper" way to determine whether the panel is supposed to be 
> > driven dual channel?
> Nice find!
> There may or may not be a bit for this in the VBT in the BIOS.  But the
> more reliably correct thing I suspect would be to just look at the
> preferred mode for the panel and assume it's dual-link LVDS if the pixel
> clock is >112MHz, since that's the crossover frequency.

Coincidently, we hit the same issue with a HP laptop, and wondered how
is the best way to fix.  I hoped BIOS could handle better,
i.e. setting the power bits no matter whether the lid is opened or
not.  But it doesn't set unless the lid is once opened.

(Interestingly, the bits remain even if you close the lid again before
 booting.  Just opening once seems triggering the probing of LVDS
 panel in BIOS and let it setting the right values.)

FWIW, when I check ironalke_crtc_mode_set(), the clock of the HD+
LVDS mode (1600x900) is 107800 (refclk 120000), while a similar
machine with a HD panel (1366x768) shows 76300.  So, I'm not sure
whether 112MHz could be a right threshold.



More information about the Intel-gfx mailing list