move i915 to new drm_wait_on function
authorDave Airlie <airlied@linux.ie>
Sat, 28 Apr 2007 05:07:22 +0000 (15:07 +1000)
committerDave Airlie <airlied@linux.ie>
Sat, 28 Apr 2007 05:07:43 +0000 (15:07 +1000)
shared-core/i915_irq.c

index 4047e77..8748b64 100644 (file)
@@ -381,6 +381,13 @@ void i915_user_irq_off(drm_i915_private_t *dev_priv)
        spin_unlock(&dev_priv->user_irq_lock);
 }
                
+static int wait_compare(struct drm_device *dev, void *priv)
+{
+       drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
+       int irq_nr = (u64)priv;
+
+       return (READ_BREADCRUMB(dev_priv) >= irq_nr);
+}
 
 static int i915_wait_irq(drm_device_t * dev, int irq_nr)
 {
@@ -396,8 +403,8 @@ static int i915_wait_irq(drm_device_t * dev, int irq_nr)
        dev_priv->sarea_priv->perf_boxes |= I915_BOX_WAIT;
        
        i915_user_irq_on(dev_priv);
-       DRM_WAIT_ON(ret, dev_priv->irq_queue, 3 * DRM_HZ,
-                   READ_BREADCRUMB(dev_priv) >= irq_nr);
+       ret = drm_wait_on(dev, &dev_priv->irq_queue, 3 * DRM_HZ, wait_compare,
+                         (void *)(u64)irq_nr);
        i915_user_irq_off(dev_priv);
 
        if (ret == DRM_ERR(EBUSY)) {