diff options
Diffstat (limited to 'include/drm/drm_vblank.h')
-rw-r--r-- | include/drm/drm_vblank.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/include/drm/drm_vblank.h b/include/drm/drm_vblank.h index 6ad9630d4f48..e528bb2f659d 100644 --- a/include/drm/drm_vblank.h +++ b/include/drm/drm_vblank.h | |||
@@ -129,6 +129,26 @@ struct drm_vblank_crtc { | |||
129 | */ | 129 | */ |
130 | u32 last; | 130 | u32 last; |
131 | /** | 131 | /** |
132 | * @max_vblank_count: | ||
133 | * | ||
134 | * Maximum value of the vblank registers for this crtc. This value +1 | ||
135 | * will result in a wrap-around of the vblank register. It is used | ||
136 | * by the vblank core to handle wrap-arounds. | ||
137 | * | ||
138 | * If set to zero the vblank core will try to guess the elapsed vblanks | ||
139 | * between times when the vblank interrupt is disabled through | ||
140 | * high-precision timestamps. That approach is suffering from small | ||
141 | * races and imprecision over longer time periods, hence exposing a | ||
142 | * hardware vblank counter is always recommended. | ||
143 | * | ||
144 | * This is the runtime configurable per-crtc maximum set through | ||
145 | * drm_crtc_set_max_vblank_count(). If this is used the driver | ||
146 | * must leave the device wide &drm_device.max_vblank_count at zero. | ||
147 | * | ||
148 | * If non-zero, &drm_crtc_funcs.get_vblank_counter must be set. | ||
149 | */ | ||
150 | u32 max_vblank_count; | ||
151 | /** | ||
132 | * @inmodeset: Tracks whether the vblank is disabled due to a modeset. | 152 | * @inmodeset: Tracks whether the vblank is disabled due to a modeset. |
133 | * For legacy driver bit 2 additionally tracks whether an additional | 153 | * For legacy driver bit 2 additionally tracks whether an additional |
134 | * temporary vblank reference has been acquired to paper over the | 154 | * temporary vblank reference has been acquired to paper over the |
@@ -206,4 +226,6 @@ bool drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev, | |||
206 | void drm_calc_timestamping_constants(struct drm_crtc *crtc, | 226 | void drm_calc_timestamping_constants(struct drm_crtc *crtc, |
207 | const struct drm_display_mode *mode); | 227 | const struct drm_display_mode *mode); |
208 | wait_queue_head_t *drm_crtc_vblank_waitqueue(struct drm_crtc *crtc); | 228 | wait_queue_head_t *drm_crtc_vblank_waitqueue(struct drm_crtc *crtc); |
229 | void drm_crtc_set_max_vblank_count(struct drm_crtc *crtc, | ||
230 | u32 max_vblank_count); | ||
209 | #endif | 231 | #endif |