drm/i915: Allow LVDS on pipe A on gen4+
authorAdam Jackson <ajax@redhat.com>
Wed, 31 Mar 2010 15:41:51 +0000 (11:41 -0400)
committerEric Anholt <eric@anholt.net>
Mon, 12 Apr 2010 16:23:35 +0000 (09:23 -0700)
The gen4 docs say it works, so why not.  Tested on Ironlake.

Signed-off-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_lvds.c

index 5a69800820645b2dc2335482a45deff40bfed36c..eb4a265861ec0bb8f9c6e816eb1d44380c3228af 100644 (file)
@@ -3303,7 +3303,9 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
                        lvds_reg = PCH_LVDS;
 
                lvds = I915_READ(lvds_reg);
-               lvds |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP | LVDS_PIPEB_SELECT;
+               lvds |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP;
+               if (pipe == 1)
+                       lvds |= LVDS_PIPEB_SELECT;
                /* set the corresponsding LVDS_BORDER bit */
                lvds |= dev_priv->lvds_border_bits;
                /* Set the B0-B3 data pairs corresponding to whether we're going to
index bc0ab7d57dbc88e1c19ff6dbcc34043692705384..a69de00320bc60b535724c2edfc9eae11892ebc9 100644 (file)
@@ -953,6 +953,8 @@ void intel_lvds_init(struct drm_device *dev)
 
        intel_encoder->clone_mask = (1 << INTEL_LVDS_CLONE_BIT);
        intel_encoder->crtc_mask = (1 << 1);
+       if (IS_I965G(dev))
+               intel_encoder->crtc_mask |= (1 << 0);
        drm_encoder_helper_add(encoder, &intel_lvds_helper_funcs);
        drm_connector_helper_add(connector, &intel_lvds_connector_helper_funcs);
        connector->display_info.subpixel_order = SubPixelHorizontalRGB;