Lines Matching refs:crtc
16 struct drm_crtc *crtc = &output->crtc; in vkms_vblank_simulate() local
29 ret = drm_crtc_handle_vblank(crtc); in vkms_vblank_simulate()
37 u64 frame = drm_crtc_accurate_vblank_count(crtc); in vkms_vblank_simulate()
62 static int vkms_enable_vblank(struct drm_crtc *crtc) in vkms_enable_vblank() argument
64 struct drm_device *dev = crtc->dev; in vkms_enable_vblank()
65 unsigned int pipe = drm_crtc_index(crtc); in vkms_enable_vblank()
67 struct vkms_output *out = drm_crtc_to_vkms_output(crtc); in vkms_enable_vblank()
69 drm_calc_timestamping_constants(crtc, &crtc->mode); in vkms_enable_vblank()
79 static void vkms_disable_vblank(struct drm_crtc *crtc) in vkms_disable_vblank() argument
81 struct vkms_output *out = drm_crtc_to_vkms_output(crtc); in vkms_disable_vblank()
86 static bool vkms_get_vblank_timestamp(struct drm_crtc *crtc, in vkms_get_vblank_timestamp() argument
90 struct drm_device *dev = crtc->dev; in vkms_get_vblank_timestamp()
91 unsigned int pipe = crtc->index; in vkms_get_vblank_timestamp()
119 vkms_atomic_crtc_duplicate_state(struct drm_crtc *crtc) in vkms_atomic_crtc_duplicate_state() argument
123 if (WARN_ON(!crtc->state)) in vkms_atomic_crtc_duplicate_state()
130 __drm_atomic_helper_crtc_duplicate_state(crtc, &vkms_state->base); in vkms_atomic_crtc_duplicate_state()
137 static void vkms_atomic_crtc_destroy_state(struct drm_crtc *crtc, in vkms_atomic_crtc_destroy_state() argument
149 static void vkms_atomic_crtc_reset(struct drm_crtc *crtc) in vkms_atomic_crtc_reset() argument
154 if (crtc->state) in vkms_atomic_crtc_reset()
155 vkms_atomic_crtc_destroy_state(crtc, crtc->state); in vkms_atomic_crtc_reset()
157 __drm_atomic_helper_crtc_reset(crtc, &vkms_state->base); in vkms_atomic_crtc_reset()
177 static int vkms_crtc_atomic_check(struct drm_crtc *crtc, in vkms_crtc_atomic_check() argument
181 crtc); in vkms_crtc_atomic_check()
190 ret = drm_atomic_add_affected_planes(crtc_state->state, crtc); in vkms_crtc_atomic_check()
194 drm_for_each_plane_mask(plane, crtc->dev, crtc_state->plane_mask) { in vkms_crtc_atomic_check()
211 drm_for_each_plane_mask(plane, crtc->dev, crtc_state->plane_mask) { in vkms_crtc_atomic_check()
225 static void vkms_crtc_atomic_enable(struct drm_crtc *crtc, in vkms_crtc_atomic_enable() argument
228 drm_crtc_vblank_on(crtc); in vkms_crtc_atomic_enable()
231 static void vkms_crtc_atomic_disable(struct drm_crtc *crtc, in vkms_crtc_atomic_disable() argument
234 drm_crtc_vblank_off(crtc); in vkms_crtc_atomic_disable()
237 static void vkms_crtc_atomic_begin(struct drm_crtc *crtc, in vkms_crtc_atomic_begin() argument
240 struct vkms_output *vkms_output = drm_crtc_to_vkms_output(crtc); in vkms_crtc_atomic_begin()
248 static void vkms_crtc_atomic_flush(struct drm_crtc *crtc, in vkms_crtc_atomic_flush() argument
251 struct vkms_output *vkms_output = drm_crtc_to_vkms_output(crtc); in vkms_crtc_atomic_flush()
253 if (crtc->state->event) { in vkms_crtc_atomic_flush()
254 spin_lock(&crtc->dev->event_lock); in vkms_crtc_atomic_flush()
256 if (drm_crtc_vblank_get(crtc) != 0) in vkms_crtc_atomic_flush()
257 drm_crtc_send_vblank_event(crtc, crtc->state->event); in vkms_crtc_atomic_flush()
259 drm_crtc_arm_vblank_event(crtc, crtc->state->event); in vkms_crtc_atomic_flush()
261 spin_unlock(&crtc->dev->event_lock); in vkms_crtc_atomic_flush()
263 crtc->state->event = NULL; in vkms_crtc_atomic_flush()
266 vkms_output->composer_state = to_vkms_crtc_state(crtc->state); in vkms_crtc_atomic_flush()
279 int vkms_crtc_init(struct drm_device *dev, struct drm_crtc *crtc, in vkms_crtc_init() argument
282 struct vkms_output *vkms_out = drm_crtc_to_vkms_output(crtc); in vkms_crtc_init()
285 ret = drm_crtc_init_with_planes(dev, crtc, primary, cursor, in vkms_crtc_init()
292 drm_crtc_helper_add(crtc, &vkms_crtc_helper_funcs); in vkms_crtc_init()