diff options
author | Daniel Vetter <[email protected]> | 2014-09-10 17:36:08 +0200 |
---|---|---|
committer | Daniel Vetter <[email protected]> | 2014-09-11 13:31:57 +0200 |
commit | ab8905f1c6a74d695c6096791ec4b349bc985b8a (patch) | |
tree | ed9ba95e827e77ce07cb46c0081a13b77def7827 | |
parent | 2368ffb18b1d2b04eb80478d225676caa7a3c4c8 (diff) |
drm: Really never disable vblank irqs for offdelay==0
With the new support for immediate vblank disabling we always disabled
the vblank interrupt right away, irrespective of the vblank offdelay
setting.
But being able to let vblanks run forever is fairly useful for
debugging, so restore that behaviour.
Suggested-by: Mario Kleiner <[email protected]>
Cc: Mario Kleiner <[email protected]>
Cc: Matt Roper <[email protected]>
Cc: Ville Syrjälä <[email protected]>
Reviewed-by: Matt Roper <[email protected]>
Reviewed-by: Mario Kleiner <[email protected]>
Signed-off-by: Daniel Vetter <[email protected]>
-rw-r--r-- | drivers/gpu/drm/drm_irq.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index 9be760145cb7..87d148cec877 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c @@ -1005,9 +1005,11 @@ void drm_vblank_put(struct drm_device *dev, int crtc) /* Last user schedules interrupt disable */ if (atomic_dec_and_test(&vblank->refcount)) { - if (dev->vblank_disable_immediate || drm_vblank_offdelay < 0) + if (drm_vblank_offdelay == 0) + return; + else if (dev->vblank_disable_immediate || drm_vblank_offdelay < 0) vblank_disable_fn((unsigned long)vblank); - else if (drm_vblank_offdelay > 0) + else mod_timer(&vblank->disable_timer, jiffies + ((drm_vblank_offdelay * HZ)/1000)); } |