aboutsummaryrefslogtreecommitdiffstats
path: root/include/drm/drmP.h
diff options
context:
space:
mode:
authorLi Peng <peng.li@linux.intel.com>2009-11-08 23:51:22 -0500
committerEric Anholt <eric@anholt.net>2009-12-01 13:27:40 -0500
commit778c902640530371a169ad1c03566e7c51b09874 (patch)
tree4230fb7e4f79e00931c1efcf2b88cfec285ae7ff /include/drm/drmP.h
parent27dfaf4f5825a119305db1bc63bef30ed400e376 (diff)
drm/i915: Fix sync to vblank when VGA output is turned off
In current vblank-wait implementation, if we turn off VGA output, drm_wait_vblank will still wait on the disabled pipe until timeout, because vblank on the pipe is assumed be enabled. This would cause slow system response on some system such as moblin. This patch resolve the issue by adding a drm helper function drm_vblank_off which explicitly clear vblank_enabled[crtc], wake up any waiting queue and save last vblank counter before turning off crtc. It also slightly change drm_vblank_get to ensure that we will will return immediately if trying to wait on a disabled pipe. Signed-off-by: Li Peng <peng.li@intel.com> Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> [anholt: hand-applied for conflicts with overlay changes] Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'include/drm/drmP.h')
-rw-r--r--include/drm/drmP.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index febf6c530c66..fd919959d146 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1288,6 +1288,7 @@ extern u32 drm_vblank_count(struct drm_device *dev, int crtc);
1288extern void drm_handle_vblank(struct drm_device *dev, int crtc); 1288extern void drm_handle_vblank(struct drm_device *dev, int crtc);
1289extern int drm_vblank_get(struct drm_device *dev, int crtc); 1289extern int drm_vblank_get(struct drm_device *dev, int crtc);
1290extern void drm_vblank_put(struct drm_device *dev, int crtc); 1290extern void drm_vblank_put(struct drm_device *dev, int crtc);
1291extern void drm_vblank_off(struct drm_device *dev, int crtc);
1291extern void drm_vblank_cleanup(struct drm_device *dev); 1292extern void drm_vblank_cleanup(struct drm_device *dev);
1292/* Modesetting support */ 1293/* Modesetting support */
1293extern void drm_vblank_pre_modeset(struct drm_device *dev, int crtc); 1294extern void drm_vblank_pre_modeset(struct drm_device *dev, int crtc);