From 7a6c98ef28e3dd7a1dbe19e4b92a5f816a8bc89b Mon Sep 17 00:00:00 2001 From: Jesse Barnes Date: Fri, 21 May 2010 09:40:45 -0700 Subject: [PATCH] --- yaml --- r: 199583 b: refs/heads/master c: 9517a92f48b08bb02cfb616825850b82b28461cc h: refs/heads/master i: 199581: c76723968da9abb0fc20c8a4a3e0998874501cdc 199579: 692b758890633654a8f3f14092c95d2420a76e59 199575: 1d1b159ac43058adf1f4d93f2d2e066e7ae32492 199567: 8074225ce08019d80b9de2bfe7314c6393611d89 199551: b1317a4a6941c93a68a5ea2a722d94793bd60af9 v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/i915/intel_display.c | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index ddd75ec2dcb5..48cfd24f57b2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d1b851fc0d105caa6b6e3e7c92d2987dfb52cbe0 +refs/heads/master: 9517a92f48b08bb02cfb616825850b82b28461cc diff --git a/trunk/drivers/gpu/drm/i915/intel_display.c b/trunk/drivers/gpu/drm/i915/intel_display.c index b867f3c78408..36afe9409964 100644 --- a/trunk/drivers/gpu/drm/i915/intel_display.c +++ b/trunk/drivers/gpu/drm/i915/intel_display.c @@ -1029,19 +1029,28 @@ static void i8xx_enable_fbc(struct drm_crtc *crtc, unsigned long interval) void i8xx_disable_fbc(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long timeout = jiffies + msecs_to_jiffies(1); u32 fbc_ctl; if (!I915_HAS_FBC(dev)) return; + if (!(I915_READ(FBC_CONTROL) & FBC_CTL_EN)) + return; /* Already off, just return */ + /* Disable compression */ fbc_ctl = I915_READ(FBC_CONTROL); fbc_ctl &= ~FBC_CTL_EN; I915_WRITE(FBC_CONTROL, fbc_ctl); /* Wait for compressing bit to clear */ - while (I915_READ(FBC_STATUS) & FBC_STAT_COMPRESSING) - ; /* nothing */ + while (I915_READ(FBC_STATUS) & FBC_STAT_COMPRESSING) { + if (time_after(jiffies, timeout)) { + DRM_DEBUG_DRIVER("FBC idle timed out\n"); + break; + } + ; /* do nothing */ + } intel_wait_for_vblank(dev);