On Thu, Jan 12, 2012 at 23:24, Jesse Barnes <[email protected]>wrote:
> On Thu, 12 Jan 2012 23:21:10 +0100
> Vincent Vanackere <[email protected]> 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
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx