Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7b824ec2 authored by Eric Anholt's avatar Eric Anholt
Browse files

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: default avatarEric Anholt <eric@anholt.net>
parent d1d6ca73
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -3888,6 +3888,11 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
		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.
	 * This is an exception to the general rule that mode_set doesn't turn
	 * things on.
@@ -3930,18 +3935,15 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
			if (dev_priv->lvds_dither) {
				if (HAS_PCH_SPLIT(dev)) {
					pipeconf |= PIPE_ENABLE_DITHER;
					pipeconf &= ~PIPE_DITHER_TYPE_MASK;
					pipeconf |= PIPE_DITHER_TYPE_ST01;
				} else
					lvds |= LVDS_ENABLE_DITHER;
			} else {
				if (HAS_PCH_SPLIT(dev)) {
					pipeconf &= ~PIPE_ENABLE_DITHER;
					pipeconf &= ~PIPE_DITHER_TYPE_MASK;
				} else
				if (!HAS_PCH_SPLIT(dev)) {
					lvds &= ~LVDS_ENABLE_DITHER;
				}
			}
		}
		I915_WRITE(lvds_reg, lvds);
		I915_READ(lvds_reg);
	}