Lines Matching full: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_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); in vkms_enable_vblank()
65 struct vkms_output *out = drm_crtc_to_vkms_output(crtc); in vkms_enable_vblank()
75 static void vkms_disable_vblank(struct drm_crtc *crtc) in vkms_disable_vblank() argument
77 struct vkms_output *out = drm_crtc_to_vkms_output(crtc); in vkms_disable_vblank()
82 static bool vkms_get_vblank_timestamp(struct drm_crtc *crtc, in vkms_get_vblank_timestamp() argument
86 struct drm_device *dev = crtc->dev; in vkms_get_vblank_timestamp()
89 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); in vkms_get_vblank_timestamp()
114 vkms_atomic_crtc_duplicate_state(struct drm_crtc *crtc) in vkms_atomic_crtc_duplicate_state() argument
118 if (WARN_ON(!crtc->state)) in vkms_atomic_crtc_duplicate_state()
125 __drm_atomic_helper_crtc_duplicate_state(crtc, &vkms_state->base); in vkms_atomic_crtc_duplicate_state()
132 static void vkms_atomic_crtc_destroy_state(struct drm_crtc *crtc, in vkms_atomic_crtc_destroy_state() argument
144 static void vkms_atomic_crtc_reset(struct drm_crtc *crtc) in vkms_atomic_crtc_reset() argument
149 if (crtc->state) in vkms_atomic_crtc_reset()
150 vkms_atomic_crtc_destroy_state(crtc, crtc->state); in vkms_atomic_crtc_reset()
152 __drm_atomic_helper_crtc_reset(crtc, &vkms_state->base); in vkms_atomic_crtc_reset()
171 static int vkms_crtc_atomic_check(struct drm_crtc *crtc, in vkms_crtc_atomic_check() argument
175 crtc); in vkms_crtc_atomic_check()
184 ret = drm_atomic_add_affected_planes(crtc_state->state, crtc); in vkms_crtc_atomic_check()
188 drm_for_each_plane_mask(plane, crtc->dev, crtc_state->plane_mask) { in vkms_crtc_atomic_check()
204 drm_for_each_plane_mask(plane, crtc->dev, crtc_state->plane_mask) { in vkms_crtc_atomic_check()
217 static void vkms_crtc_atomic_enable(struct drm_crtc *crtc, in vkms_crtc_atomic_enable() argument
220 drm_crtc_vblank_on(crtc); in vkms_crtc_atomic_enable()
223 static void vkms_crtc_atomic_disable(struct drm_crtc *crtc, in vkms_crtc_atomic_disable() argument
226 drm_crtc_vblank_off(crtc); in vkms_crtc_atomic_disable()
229 static void vkms_crtc_atomic_begin(struct drm_crtc *crtc, in vkms_crtc_atomic_begin() argument
233 struct vkms_output *vkms_output = drm_crtc_to_vkms_output(crtc); in vkms_crtc_atomic_begin()
241 static void vkms_crtc_atomic_flush(struct drm_crtc *crtc, in vkms_crtc_atomic_flush() argument
245 struct vkms_output *vkms_output = drm_crtc_to_vkms_output(crtc); in vkms_crtc_atomic_flush()
247 if (crtc->state->event) { in vkms_crtc_atomic_flush()
248 spin_lock(&crtc->dev->event_lock); in vkms_crtc_atomic_flush()
250 if (drm_crtc_vblank_get(crtc) != 0) in vkms_crtc_atomic_flush()
251 drm_crtc_send_vblank_event(crtc, crtc->state->event); in vkms_crtc_atomic_flush()
253 drm_crtc_arm_vblank_event(crtc, crtc->state->event); in vkms_crtc_atomic_flush()
255 spin_unlock(&crtc->dev->event_lock); in vkms_crtc_atomic_flush()
257 crtc->state->event = NULL; in vkms_crtc_atomic_flush()
260 vkms_output->composer_state = to_vkms_crtc_state(crtc->state); in vkms_crtc_atomic_flush()
273 int vkms_crtc_init(struct drm_device *dev, struct drm_crtc *crtc, in vkms_crtc_init() argument
276 struct vkms_output *vkms_out = drm_crtc_to_vkms_output(crtc); in vkms_crtc_init()
279 ret = drmm_crtc_init_with_planes(dev, crtc, primary, cursor, in vkms_crtc_init()
282 DRM_ERROR("Failed to init CRTC\n"); in vkms_crtc_init()
286 drm_crtc_helper_add(crtc, &vkms_crtc_helper_funcs); in vkms_crtc_init()
288 ret = drm_mode_crtc_set_gamma_size(crtc, VKMS_LUT_SIZE); in vkms_crtc_init()
294 drm_crtc_enable_color_mgmt(crtc, 0, false, VKMS_LUT_SIZE); in vkms_crtc_init()