drm/i915: Cleanup gen3 irq uninstall
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 24 Apr 2012 21:59:49 +0000 (22:59 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 3 May 2012 09:18:18 +0000 (11:18 +0200)
Bring the for-each-pipe loops together so that the code is easier on the
eyes.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_irq.c

index 3c3e33a..24d23a2 100644 (file)
@@ -2527,9 +2527,6 @@ static void i915_irq_uninstall(struct drm_device * dev)
        drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
        int pipe;
 
-       if (!dev_priv)
-               return;
-
        dev_priv->vblank_pipe = 0;
 
        if (I915_HAS_HOTPLUG(dev)) {
@@ -2538,14 +2535,14 @@ static void i915_irq_uninstall(struct drm_device * dev)
        }
 
        I915_WRITE16(HWSTAM, 0xffff);
-       for_each_pipe(pipe)
+       for_each_pipe(pipe) {
+               /* Clear enable bits; then clear status bits */
                I915_WRITE(PIPESTAT(pipe), 0);
+               I915_WRITE(PIPESTAT(pipe), I915_READ(PIPESTAT(pipe)));
+       }
        I915_WRITE(IMR, 0xffffffff);
        I915_WRITE(IER, 0x0);
 
-       for_each_pipe(pipe)
-               I915_WRITE(PIPESTAT(pipe),
-                          I915_READ(PIPESTAT(pipe)) & 0x8000ffff);
        I915_WRITE(IIR, I915_READ(IIR));
 }