提交 7b824ec2 编写于 作者: E Eric Anholt

drm/i915: Clear the Ironlake dithering flags when the pipe doesn't want it.

My fine DisplayPort output was getting ST dithering forever after
having had the LVDS enabled at one point.
Signed-off-by: NEric Anholt <eric@anholt.net>
上级 d1d6ca73
...@@ -3888,6 +3888,11 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc, ...@@ -3888,6 +3888,11 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
udelay(150); udelay(150);
} }
if (HAS_PCH_SPLIT(dev)) {
pipeconf &= ~PIPE_ENABLE_DITHER;
pipeconf &= ~PIPE_DITHER_TYPE_MASK;
}
/* The LVDS pin pair needs to be on before the DPLLs are enabled. /* The LVDS pin pair needs to be on before the DPLLs are enabled.
* This is an exception to the general rule that mode_set doesn't turn * This is an exception to the general rule that mode_set doesn't turn
* things on. * things on.
...@@ -3930,16 +3935,13 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc, ...@@ -3930,16 +3935,13 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
if (dev_priv->lvds_dither) { if (dev_priv->lvds_dither) {
if (HAS_PCH_SPLIT(dev)) { if (HAS_PCH_SPLIT(dev)) {
pipeconf |= PIPE_ENABLE_DITHER; pipeconf |= PIPE_ENABLE_DITHER;
pipeconf &= ~PIPE_DITHER_TYPE_MASK;
pipeconf |= PIPE_DITHER_TYPE_ST01; pipeconf |= PIPE_DITHER_TYPE_ST01;
} else } else
lvds |= LVDS_ENABLE_DITHER; lvds |= LVDS_ENABLE_DITHER;
} else { } else {
if (HAS_PCH_SPLIT(dev)) { if (!HAS_PCH_SPLIT(dev)) {
pipeconf &= ~PIPE_ENABLE_DITHER;
pipeconf &= ~PIPE_DITHER_TYPE_MASK;
} else
lvds &= ~LVDS_ENABLE_DITHER; lvds &= ~LVDS_ENABLE_DITHER;
}
} }
} }
I915_WRITE(lvds_reg, lvds); I915_WRITE(lvds_reg, lvds);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册