[x86] drm/i915: mask transcoder select bits before setting them on LVDS (Closes: #660394)

svn path=/dists/sid/linux-2.6/; revision=18915
This commit is contained in:
Ben Hutchings 2012-04-07 17:40:29 +00:00
parent db877bcfb5
commit 7f24df4a4e
3 changed files with 50 additions and 0 deletions

2
debian/changelog vendored
View File

@ -3,6 +3,8 @@ linux-2.6 (3.2.14-2) UNRELEASED; urgency=low
[ Ben Hutchings ]
* net: fix /proc/net/dev regression (Closes: #659499)
* [armel/orion5x] Fix GPIO enable bits for MPP9 (Closes: #667446)
* [x86] drm/i915: mask transcoder select bits before setting them on LVDS
(Closes: #660394)
[ Jonathan Nieder ]
* [x86] ioat: fix size of 'completion' for Xen (Closes: #660554)

View File

@ -0,0 +1,47 @@
From: Jesse Barnes <jbarnes@virtuousgeek.org>
Date: Thu, 12 Jan 2012 14:51:17 -0800
Subject: [PATCH] drm/i915: mask transcoder select bits before setting them on
LVDS
commit 7885d2052bd94395e337709cfba093a41f273ff1 upstream.
The transcoder port may changed from mode set to mode set, so make sure
to mask out the selection bits before setting the right ones or we'll
get black screens when going from transcoder B to A.
Tested-by: Vincent Vanackere <vincent.vanackere@gmail.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
---
drivers/gpu/drm/i915/intel_display.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 2a3f707..96cea08 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -5808,12 +5808,15 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
if (is_lvds) {
temp = I915_READ(PCH_LVDS);
temp |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP;
- if (HAS_PCH_CPT(dev))
+ if (HAS_PCH_CPT(dev)) {
+ temp &= ~PORT_TRANS_SEL_MASK;
temp |= PORT_TRANS_SEL_CPT(pipe);
- else if (pipe == 1)
- temp |= LVDS_PIPEB_SELECT;
- else
- temp &= ~LVDS_PIPEB_SELECT;
+ } else {
+ if (pipe == 1)
+ temp |= LVDS_PIPEB_SELECT;
+ else
+ temp &= ~LVDS_PIPEB_SELECT;
+ }
/* set the corresponsding LVDS_BORDER bit */
temp |= dev_priv->lvds_border_bits;
--
1.7.9.5

View File

@ -93,3 +93,4 @@
+ debian/revert-rtc-Provide-flag-for-rtc-devices-that-don-t-s.patch
+ bugfix/all/net-fix-proc-net-dev-regression.patch
+ bugfix/arm/ARM-orion5x-Fix-GPIO-enable-bits-for-MPP9.patch
+ bugfix/x86/drm-i915-mask-transcoder-select-bits-before-setting-.patch