drm/i915: Select correct pipe during TV detect
authorKeith Packard <keithp@keithp.com>
Fri, 13 May 2011 00:10:57 +0000 (17:10 -0700)
committerKeith Packard <keithp@keithp.com>
Wed, 13 Jul 2011 18:07:24 +0000 (11:07 -0700)
Signed-off-by: Keith Packard <keithp@keithp.com>
Tested-by: Yi Sun <yi.sun@intel.com>
drivers/gpu/drm/i915/intel_tv.c

index 113e4e7264cdfdb4ba4c3b26af49c15911c2b679..950ae1477738b6c9765f3c39668759465f59c6c7 100644 (file)
@@ -1236,6 +1236,8 @@ intel_tv_detect_type (struct intel_tv *intel_tv,
                      struct drm_connector *connector)
 {
        struct drm_encoder *encoder = &intel_tv->base.base;
+       struct drm_crtc *crtc = encoder->crtc;
+       struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
        struct drm_device *dev = encoder->dev;
        struct drm_i915_private *dev_priv = dev->dev_private;
        unsigned long irqflags;
@@ -1258,6 +1260,10 @@ intel_tv_detect_type (struct intel_tv *intel_tv,
        /* Poll for TV detection */
        tv_ctl &= ~(TV_ENC_ENABLE | TV_TEST_MODE_MASK);
        tv_ctl |= TV_TEST_MODE_MONITOR_DETECT;
+       if (intel_crtc->pipe == 1)
+               tv_ctl |= TV_ENC_PIPEB_SELECT;
+       else
+               tv_ctl &= ~TV_ENC_PIPEB_SELECT;
 
        tv_dac &= ~(TVDAC_SENSE_MASK | DAC_A_MASK | DAC_B_MASK | DAC_C_MASK);
        tv_dac |= (TVDAC_STATE_CHG_EN |