| 1 | /* SPDX-License-Identifier: GPL-2.0+ */ |
| 2 | |
| 3 | #ifndef _DRM_VBLANK_HELPER_H_ |
| 4 | #define _DRM_VBLANK_HELPER_H_ |
| 5 | |
| 6 | #include <linux/hrtimer_types.h> |
| 7 | #include <linux/types.h> |
| 8 | |
| 9 | struct drm_atomic_state; |
| 10 | struct drm_crtc; |
| 11 | |
| 12 | /* |
| 13 | * VBLANK helpers |
| 14 | */ |
| 15 | |
| 16 | void drm_crtc_vblank_atomic_flush(struct drm_crtc *crtc, |
| 17 | struct drm_atomic_state *state); |
| 18 | void drm_crtc_vblank_atomic_enable(struct drm_crtc *crtc, |
| 19 | struct drm_atomic_state *state); |
| 20 | void drm_crtc_vblank_atomic_disable(struct drm_crtc *crtc, |
| 21 | struct drm_atomic_state *crtc_state); |
| 22 | |
| 23 | /** |
| 24 | * DRM_CRTC_HELPER_VBLANK_FUNCS - Default implementation for VBLANK helpers |
| 25 | * |
| 26 | * This macro initializes struct &drm_crtc_helper_funcs to default helpers |
| 27 | * for VBLANK handling. |
| 28 | */ |
| 29 | #define DRM_CRTC_HELPER_VBLANK_FUNCS \ |
| 30 | .atomic_flush = drm_crtc_vblank_atomic_flush, \ |
| 31 | .atomic_enable = drm_crtc_vblank_atomic_enable, \ |
| 32 | .atomic_disable = drm_crtc_vblank_atomic_disable |
| 33 | |
| 34 | /* |
| 35 | * VBLANK timer |
| 36 | */ |
| 37 | |
| 38 | int drm_crtc_vblank_helper_enable_vblank_timer(struct drm_crtc *crtc); |
| 39 | void drm_crtc_vblank_helper_disable_vblank_timer(struct drm_crtc *crtc); |
| 40 | bool drm_crtc_vblank_helper_get_vblank_timestamp_from_timer(struct drm_crtc *crtc, |
| 41 | int *max_error, |
| 42 | ktime_t *vblank_time, |
| 43 | bool in_vblank_irq); |
| 44 | |
| 45 | /** |
| 46 | * DRM_CRTC_VBLANK_TIMER_FUNCS - Default implementation for VBLANK timers |
| 47 | * |
| 48 | * This macro initializes struct &drm_crtc_funcs to default helpers for |
| 49 | * VBLANK timers. |
| 50 | */ |
| 51 | #define DRM_CRTC_VBLANK_TIMER_FUNCS \ |
| 52 | .enable_vblank = drm_crtc_vblank_helper_enable_vblank_timer, \ |
| 53 | .disable_vblank = drm_crtc_vblank_helper_disable_vblank_timer, \ |
| 54 | .get_vblank_timestamp = drm_crtc_vblank_helper_get_vblank_timestamp_from_timer |
| 55 | |
| 56 | #endif |
| 57 | |