summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_display.c
diff options
context:
space:
mode:
authorBen Widawsky2014-04-10 23:32:41 +0200
committerDaniel Vetter2014-04-11 11:38:21 +0200
commit23d0b13036d14257ae4d226209cd7845f25af8e0 (patch)
treec8c30f96f2ffed883c55b68b6378d4a789f6a2c1 /drivers/gpu/drm/i915/intel_display.c
parentdrm/i915: Add support for DRRS to switch RR (diff)
downloadkernel-qcow2-linux-23d0b13036d14257ae4d226209cd7845f25af8e0.tar.gz
kernel-qcow2-linux-23d0b13036d14257ae4d226209cd7845f25af8e0.tar.xz
kernel-qcow2-linux-23d0b13036d14257ae4d226209cd7845f25af8e0.zip
drm/i915/bdw: Add 42ms delay for IPS disable
This is a requirement added to the spec. This patch will prevent persistent corruption on the display. v2: Make the wait before the vblank wait. (Art) Try to finish early by polling the register s/present/prevent (Chris) Cc: Art Runyan <arthur.j.runyan@intel.com> Signed-off-by: Ben Widawsky <ben@bwidawsk.net> [danvet: Upgrade debug output to ERROR.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r--drivers/gpu/drm/i915/intel_display.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 51b3603d5ed7..209fbbe64161 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -3583,10 +3583,13 @@ void hsw_disable_ips(struct intel_crtc *crtc)
return;
assert_plane_enabled(dev_priv, crtc->plane);
- if (IS_BROADWELL(crtc->base.dev)) {
+ if (IS_BROADWELL(dev)) {
mutex_lock(&dev_priv->rps.hw_lock);
WARN_ON(sandybridge_pcode_write(dev_priv, DISPLAY_IPS_CONTROL, 0));
mutex_unlock(&dev_priv->rps.hw_lock);
+ /* wait for pcode to finish disabling IPS, which may take up to 42ms */
+ if (wait_for((I915_READ(IPS_CTL) & IPS_ENABLE) == 0, 42))
+ DRM_ERROR("Timed out waiting for IPS disable\n");
} else {
I915_WRITE(IPS_CTL, 0);
POSTING_READ(IPS_CTL);