drm: make sure vblank interrupts are disabled at DPMS time
authorJesse Barnes <jbarnes@virtuousgeek.org>
Fri, 26 Mar 2010 18:07:15 +0000 (18:07 +0000)
committerDave Airlie <airlied@redhat.com>
Mon, 26 Apr 2010 23:37:39 +0000 (09:37 +1000)
When we call drm_vblank_off() at DPMS off time (to wake any clients so
they don't hang) we need to make sure interrupts are actually disabled.
If drm_vblank_off() gets called before the vblank usage timer expires,
it'll prevent the timer from disabling interrupts since it also clears
the vblank_enabled flag for the pipe.

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/drm_irq.c

index b98384dbd9a7ace015a358c6085b01dc5de0a620..99ce7dcb28e03cf5f1ca752e53d8da52d226876f 100644 (file)
@@ -475,6 +475,7 @@ void drm_vblank_off(struct drm_device *dev, int crtc)
        unsigned long irqflags;
 
        spin_lock_irqsave(&dev->vbl_lock, irqflags);
+       dev->driver->disable_vblank(dev, crtc);
        DRM_WAKEUP(&dev->vbl_queue[crtc]);
        dev->vblank_enabled[crtc] = 0;
        dev->last_vblank[crtc] = dev->driver->get_vblank_counter(dev, crtc);