drm/i915: use transcoder select bits on VGA and HDMI on CPT
authorJesse Barnes <jbarnes@virtuousgeek.org>
Wed, 12 Oct 2011 16:01:58 +0000 (09:01 -0700)
committerKeith Packard <keithp@keithp.com>
Thu, 20 Oct 2011 22:26:43 +0000 (15:26 -0700)
Required for 3 pipe functionality.

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Tested-By: Eugeni Dodonov <eugeni.dodonov@intel.com>
Reviewed-By: Eugeni Dodonov <eugeni.dodonov@intel.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
drivers/gpu/drm/i915/intel_crt.c
drivers/gpu/drm/i915/intel_hdmi.c

index 451534c..fee0ad0 100644 (file)
@@ -152,17 +152,13 @@ static void intel_crt_mode_set(struct drm_encoder *encoder,
        if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC)
                adpa |= ADPA_VSYNC_ACTIVE_HIGH;
 
-       if (intel_crtc->pipe == 0) {
-               if (HAS_PCH_CPT(dev))
-                       adpa |= PORT_TRANS_A_SEL_CPT;
-               else
-                       adpa |= ADPA_PIPE_A_SELECT;
-       } else {
-               if (HAS_PCH_CPT(dev))
-                       adpa |= PORT_TRANS_B_SEL_CPT;
-               else
-                       adpa |= ADPA_PIPE_B_SELECT;
-       }
+       /* For CPT allow 3 pipe config, for others just use A or B */
+       if (HAS_PCH_CPT(dev))
+               adpa |= PORT_TRANS_SEL_CPT(intel_crtc->pipe);
+       else if (intel_crtc->pipe == 0)
+               adpa |= ADPA_PIPE_A_SELECT;
+       else
+               adpa |= ADPA_PIPE_B_SELECT;
 
        if (!HAS_PCH_SPLIT(dev))
                I915_WRITE(BCLRPAT(intel_crtc->pipe), 0);
index 185c5aa..e7e716c 100644 (file)
@@ -252,12 +252,10 @@ static void intel_hdmi_mode_set(struct drm_encoder *encoder,
                intel_write_eld(encoder, adjusted_mode);
        }
 
-       if (intel_crtc->pipe == 1) {
-               if (HAS_PCH_CPT(dev))
-                       sdvox |= PORT_TRANS_B_SEL_CPT;
-               else
-                       sdvox |= SDVO_PIPE_B_SELECT;
-       }
+       if (HAS_PCH_CPT(dev))
+               sdvox |= PORT_TRANS_SEL_CPT(intel_crtc->pipe);
+       else if (intel_crtc->pipe == 1)
+               sdvox |= SDVO_PIPE_B_SELECT;
 
        I915_WRITE(intel_hdmi->sdvox_reg, sdvox);
        POSTING_READ(intel_hdmi->sdvox_reg);