Lines Matching full:crtc

14 	struct drm_crtc *crtc = &output->crtc;  in vkms_vblank_simulate()  local
24 ret = drm_crtc_handle_vblank(crtc); in vkms_vblank_simulate()
32 u64 frame = drm_crtc_accurate_vblank_count(crtc); in vkms_vblank_simulate()
55 static int vkms_enable_vblank(struct drm_crtc *crtc) in vkms_enable_vblank() argument
57 struct drm_device *dev = crtc->dev; in vkms_enable_vblank()
58 unsigned int pipe = drm_crtc_index(crtc); in vkms_enable_vblank()
60 struct vkms_output *out = drm_crtc_to_vkms_output(crtc); in vkms_enable_vblank()
62 drm_calc_timestamping_constants(crtc, &crtc->mode); in vkms_enable_vblank()
72 static void vkms_disable_vblank(struct drm_crtc *crtc) in vkms_disable_vblank() argument
74 struct vkms_output *out = drm_crtc_to_vkms_output(crtc); in vkms_disable_vblank()
79 static bool vkms_get_vblank_timestamp(struct drm_crtc *crtc, in vkms_get_vblank_timestamp() argument
83 struct drm_device *dev = crtc->dev; in vkms_get_vblank_timestamp()
84 unsigned int pipe = crtc->index; in vkms_get_vblank_timestamp()
112 vkms_atomic_crtc_duplicate_state(struct drm_crtc *crtc) in vkms_atomic_crtc_duplicate_state() argument
116 if (WARN_ON(!crtc->state)) in vkms_atomic_crtc_duplicate_state()
123 __drm_atomic_helper_crtc_duplicate_state(crtc, &vkms_state->base); in vkms_atomic_crtc_duplicate_state()
130 static void vkms_atomic_crtc_destroy_state(struct drm_crtc *crtc, in vkms_atomic_crtc_destroy_state() argument
142 static void vkms_atomic_crtc_reset(struct drm_crtc *crtc) in vkms_atomic_crtc_reset() argument
147 if (crtc->state) in vkms_atomic_crtc_reset()
148 vkms_atomic_crtc_destroy_state(crtc, crtc->state); in vkms_atomic_crtc_reset()
150 __drm_atomic_helper_crtc_reset(crtc, &vkms_state->base); in vkms_atomic_crtc_reset()
170 static int vkms_crtc_atomic_check(struct drm_crtc *crtc, in vkms_crtc_atomic_check() argument
181 ret = drm_atomic_add_affected_planes(state->state, crtc); in vkms_crtc_atomic_check()
185 drm_for_each_plane_mask(plane, crtc->dev, state->plane_mask) { in vkms_crtc_atomic_check()
202 drm_for_each_plane_mask(plane, crtc->dev, state->plane_mask) { in vkms_crtc_atomic_check()
216 static void vkms_crtc_atomic_enable(struct drm_crtc *crtc, in vkms_crtc_atomic_enable() argument
219 drm_crtc_vblank_on(crtc); in vkms_crtc_atomic_enable()
222 static void vkms_crtc_atomic_disable(struct drm_crtc *crtc, in vkms_crtc_atomic_disable() argument
225 drm_crtc_vblank_off(crtc); in vkms_crtc_atomic_disable()
228 static void vkms_crtc_atomic_begin(struct drm_crtc *crtc, in vkms_crtc_atomic_begin() argument
231 struct vkms_output *vkms_output = drm_crtc_to_vkms_output(crtc); in vkms_crtc_atomic_begin()
239 static void vkms_crtc_atomic_flush(struct drm_crtc *crtc, in vkms_crtc_atomic_flush() argument
242 struct vkms_output *vkms_output = drm_crtc_to_vkms_output(crtc); in vkms_crtc_atomic_flush()
244 if (crtc->state->event) { in vkms_crtc_atomic_flush()
245 spin_lock(&crtc->dev->event_lock); in vkms_crtc_atomic_flush()
247 if (drm_crtc_vblank_get(crtc) != 0) in vkms_crtc_atomic_flush()
248 drm_crtc_send_vblank_event(crtc, crtc->state->event); in vkms_crtc_atomic_flush()
250 drm_crtc_arm_vblank_event(crtc, crtc->state->event); in vkms_crtc_atomic_flush()
252 spin_unlock(&crtc->dev->event_lock); in vkms_crtc_atomic_flush()
254 crtc->state->event = NULL; in vkms_crtc_atomic_flush()
257 vkms_output->composer_state = to_vkms_crtc_state(crtc->state); in vkms_crtc_atomic_flush()
270 int vkms_crtc_init(struct drm_device *dev, struct drm_crtc *crtc, in vkms_crtc_init() argument
273 struct vkms_output *vkms_out = drm_crtc_to_vkms_output(crtc); in vkms_crtc_init()
276 ret = drm_crtc_init_with_planes(dev, crtc, primary, cursor, in vkms_crtc_init()
279 DRM_ERROR("Failed to init CRTC\n"); in vkms_crtc_init()
283 drm_crtc_helper_add(crtc, &vkms_crtc_helper_funcs); in vkms_crtc_init()