On Thu, Jan 12, 2012 at 23:24, Jesse Barnes <jbar...@virtuousgeek.org>wrote:

> On Thu, 12 Jan 2012 23:21:10 +0100
> Vincent Vanackere <vincent.vanack...@gmail.com> wrote:
> > I'm happy to report that this patch indeed fixes the issue for me (tested
> > both on linus' master and drm-intel-next).
> > Note that I had to apply it by hand (the patch was mangled by your mailer
> > ?), therefore I'm resending your fix as an attachment in case other
> people
> > are interested.
> >
> > Many thanks for the quick fix !
>
> Great, thanks for testing.  Your fixed up patch was missing one line
> though, can you re-test with it added?
>
> After the:
>        temp &= ~PORT_TRANS_SEL_MASK;
> you need to also add a:
>        temp |= PORT_TRANS_SEL_CPT(pipe);
>
> in case you end up running the LVDS off of transcoder B.
>
>
Tested with the (attached, hopefully correct) patch and it still works. :-)

Vincent
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 2a3f707..51e7b58 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;
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to