diff options
author | Jesse Barnes <jbarnes@virtuousgeek.org> | 2010-03-26 14:07:15 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-04-26 19:37:39 -0400 |
commit | e32ee7fa54e3172e6413cefaaee9222a3f521617 (patch) | |
tree | 9bc7ec6a5d6d2dadd3a38265f4b1ed01a57886af /drivers/gpu | |
parent | c6f8505e4627ba8ca46cbcb602ad82e7f17a7122 (diff) |
drm: make sure vblank interrupts are disabled at DPMS time
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>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/drm_irq.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index b98384dbd9a7..99ce7dcb28e0 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c | |||
@@ -475,6 +475,7 @@ void drm_vblank_off(struct drm_device *dev, int crtc) | |||
475 | unsigned long irqflags; | 475 | unsigned long irqflags; |
476 | 476 | ||
477 | spin_lock_irqsave(&dev->vbl_lock, irqflags); | 477 | spin_lock_irqsave(&dev->vbl_lock, irqflags); |
478 | dev->driver->disable_vblank(dev, crtc); | ||
478 | DRM_WAKEUP(&dev->vbl_queue[crtc]); | 479 | DRM_WAKEUP(&dev->vbl_queue[crtc]); |
479 | dev->vblank_enabled[crtc] = 0; | 480 | dev->vblank_enabled[crtc] = 0; |
480 | dev->last_vblank[crtc] = dev->driver->get_vblank_counter(dev, crtc); | 481 | dev->last_vblank[crtc] = dev->driver->get_vblank_counter(dev, crtc); |