|
@@ -1267,6 +1267,7 @@ static void intel_enable_transcoder(struct drm_i915_private *dev_priv,
|
|
|
{
|
|
|
int reg;
|
|
|
u32 val, pipeconf_val;
|
|
|
+ struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe];
|
|
|
|
|
|
/* PCH only available on ILK+ */
|
|
|
BUG_ON(dev_priv->info->gen < 5);
|
|
@@ -1293,7 +1294,11 @@ static void intel_enable_transcoder(struct drm_i915_private *dev_priv,
|
|
|
|
|
|
val &= ~TRANS_INTERLACE_MASK;
|
|
|
if ((pipeconf_val & PIPECONF_INTERLACE_MASK) == PIPECONF_INTERLACED_ILK)
|
|
|
- val |= TRANS_INTERLACED;
|
|
|
+ if (HAS_PCH_IBX(dev_priv->dev) &&
|
|
|
+ intel_pipe_has_type(crtc, INTEL_OUTPUT_SDVO))
|
|
|
+ val |= TRANS_LEGACY_INTERLACED_ILK;
|
|
|
+ else
|
|
|
+ val |= TRANS_INTERLACED;
|
|
|
else
|
|
|
val |= TRANS_PROGRESSIVE;
|
|
|
|