提交 e32ee7fa 编写于 作者: J Jesse Barnes 提交者: Dave Airlie

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: NJesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: NDave Airlie <airlied@redhat.com>
上级 c6f8505e
...@@ -475,6 +475,7 @@ void drm_vblank_off(struct drm_device *dev, int crtc) ...@@ -475,6 +475,7 @@ void drm_vblank_off(struct drm_device *dev, int crtc)
unsigned long irqflags; unsigned long irqflags;
spin_lock_irqsave(&dev->vbl_lock, irqflags); spin_lock_irqsave(&dev->vbl_lock, irqflags);
dev->driver->disable_vblank(dev, crtc);
DRM_WAKEUP(&dev->vbl_queue[crtc]); DRM_WAKEUP(&dev->vbl_queue[crtc]);
dev->vblank_enabled[crtc] = 0; dev->vblank_enabled[crtc] = 0;
dev->last_vblank[crtc] = dev->driver->get_vblank_counter(dev, crtc); dev->last_vblank[crtc] = dev->driver->get_vblank_counter(dev, crtc);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册