Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
fork
Configure Feed
Select the types of activity you want to include in your feed.
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
9struct drm_atomic_state;
10struct drm_crtc;
11
12/*
13 * VBLANK helpers
14 */
15
16void drm_crtc_vblank_atomic_flush(struct drm_crtc *crtc,
17 struct drm_atomic_state *state);
18void drm_crtc_vblank_atomic_enable(struct drm_crtc *crtc,
19 struct drm_atomic_state *state);
20void 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
38int drm_crtc_vblank_helper_enable_vblank_timer(struct drm_crtc *crtc);
39void drm_crtc_vblank_helper_disable_vblank_timer(struct drm_crtc *crtc);
40bool 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