Lines Matching full:crtc
79 compute_crc(struct drm_crtc *crtc, in compute_crc() argument
111 struct drm_crtc *crtc = &du->crtc; in crc_generate_worker() local
112 struct vmw_private *vmw = vmw_priv(crtc->dev); in crc_generate_worker()
136 crtc->dev, in crc_generate_worker()
141 compute_crc(crtc, surf, &crc32); in crc_generate_worker()
157 drm_crtc_add_crc_entry(crtc, true, frame_start++, &crc32); in crc_generate_worker()
164 struct drm_crtc *crtc = &du->crtc; in vmw_vkms_vblank_simulate() local
165 struct vmw_private *vmw = vmw_priv(crtc->dev); in vmw_vkms_vblank_simulate()
173 drm_dbg_driver(crtc->dev, "vblank timer missed %lld frames.\n", in vmw_vkms_vblank_simulate()
176 locked = vmw_vkms_vblank_trylock(crtc); in vmw_vkms_vblank_simulate()
177 ret = drm_crtc_handle_vblank(crtc); in vmw_vkms_vblank_simulate()
182 vmw_vkms_unlock(crtc); in vmw_vkms_vblank_simulate()
185 u64 frame = drm_crtc_accurate_vblank_count(crtc); in vmw_vkms_vblank_simulate()
191 drm_dbg_driver(crtc->dev, in vmw_vkms_vblank_simulate()
200 drm_dbg_driver(crtc->dev, "Composer worker already queued\n"); in vmw_vkms_vblank_simulate()
243 vmw_vkms_get_vblank_timestamp(struct drm_crtc *crtc, in vmw_vkms_get_vblank_timestamp() argument
248 struct drm_device *dev = crtc->dev; in vmw_vkms_get_vblank_timestamp()
250 unsigned int pipe = crtc->index; in vmw_vkms_get_vblank_timestamp()
251 struct vmw_display_unit *du = vmw_crtc_to_du(crtc); in vmw_vkms_get_vblank_timestamp()
280 vmw_vkms_enable_vblank(struct drm_crtc *crtc) in vmw_vkms_enable_vblank() argument
282 struct drm_device *dev = crtc->dev; in vmw_vkms_enable_vblank()
284 unsigned int pipe = drm_crtc_index(crtc); in vmw_vkms_enable_vblank()
286 struct vmw_display_unit *du = vmw_crtc_to_du(crtc); in vmw_vkms_enable_vblank()
291 drm_calc_timestamping_constants(crtc, &crtc->mode); in vmw_vkms_enable_vblank()
302 vmw_vkms_disable_vblank(struct drm_crtc *crtc) in vmw_vkms_disable_vblank() argument
304 struct vmw_display_unit *du = vmw_crtc_to_du(crtc); in vmw_vkms_disable_vblank()
305 struct vmw_private *vmw = vmw_priv(crtc->dev); in vmw_vkms_disable_vblank()
322 vmw_vkms_crtc_init(struct drm_crtc *crtc) in vmw_vkms_crtc_init() argument
324 struct vmw_display_unit *du = vmw_crtc_to_du(crtc); in vmw_vkms_crtc_init()
334 vmw_vkms_crtc_cleanup(struct drm_crtc *crtc) in vmw_vkms_crtc_cleanup() argument
336 struct vmw_display_unit *du = vmw_crtc_to_du(crtc); in vmw_vkms_crtc_cleanup()
345 vmw_vkms_crtc_atomic_begin(struct drm_crtc *crtc, in vmw_vkms_crtc_atomic_begin() argument
348 struct vmw_private *vmw = vmw_priv(crtc->dev); in vmw_vkms_crtc_atomic_begin()
351 vmw_vkms_modeset_lock(crtc); in vmw_vkms_crtc_atomic_begin()
355 vmw_vkms_crtc_atomic_flush(struct drm_crtc *crtc, in vmw_vkms_crtc_atomic_flush() argument
359 struct vmw_private *vmw = vmw_priv(crtc->dev); in vmw_vkms_crtc_atomic_flush()
364 if (crtc->state->event) { in vmw_vkms_crtc_atomic_flush()
365 spin_lock_irqsave(&crtc->dev->event_lock, flags); in vmw_vkms_crtc_atomic_flush()
367 if (drm_crtc_vblank_get(crtc) != 0) in vmw_vkms_crtc_atomic_flush()
368 drm_crtc_send_vblank_event(crtc, crtc->state->event); in vmw_vkms_crtc_atomic_flush()
370 drm_crtc_arm_vblank_event(crtc, crtc->state->event); in vmw_vkms_crtc_atomic_flush()
372 spin_unlock_irqrestore(&crtc->dev->event_lock, flags); in vmw_vkms_crtc_atomic_flush()
374 crtc->state->event = NULL; in vmw_vkms_crtc_atomic_flush()
377 vmw_vkms_unlock(crtc); in vmw_vkms_crtc_atomic_flush()
381 vmw_vkms_crtc_atomic_enable(struct drm_crtc *crtc, in vmw_vkms_crtc_atomic_enable() argument
384 struct vmw_private *vmw = vmw_priv(crtc->dev); in vmw_vkms_crtc_atomic_enable()
387 drm_crtc_vblank_on(crtc); in vmw_vkms_crtc_atomic_enable()
391 vmw_vkms_crtc_atomic_disable(struct drm_crtc *crtc, in vmw_vkms_crtc_atomic_disable() argument
394 struct vmw_private *vmw = vmw_priv(crtc->dev); in vmw_vkms_crtc_atomic_disable()
397 drm_crtc_vblank_off(crtc); in vmw_vkms_crtc_atomic_disable()
401 is_crc_supported(struct drm_crtc *crtc) in is_crc_supported() argument
403 struct vmw_private *vmw = vmw_priv(crtc->dev); in is_crc_supported()
435 vmw_vkms_get_crc_sources(struct drm_crtc *crtc, in vmw_vkms_get_crc_sources() argument
439 if (!is_crc_supported(crtc)) in vmw_vkms_get_crc_sources()
447 vmw_vkms_verify_crc_source(struct drm_crtc *crtc, in vmw_vkms_verify_crc_source() argument
453 if (!is_crc_supported(crtc)) in vmw_vkms_verify_crc_source()
457 drm_dbg_driver(crtc->dev, "unknown source '%s'\n", src_name); in vmw_vkms_verify_crc_source()
467 vmw_vkms_set_crc_source(struct drm_crtc *crtc, in vmw_vkms_set_crc_source() argument
470 struct vmw_display_unit *du = vmw_crtc_to_du(crtc); in vmw_vkms_set_crc_source()
474 if (!is_crc_supported(crtc)) in vmw_vkms_set_crc_source()
480 drm_crtc_vblank_get(crtc); in vmw_vkms_set_crc_source()
482 locked = vmw_vkms_modeset_lock_relaxed(crtc); in vmw_vkms_set_crc_source()
486 vmw_vkms_unlock(crtc); in vmw_vkms_set_crc_source()
489 drm_crtc_vblank_put(crtc); in vmw_vkms_set_crc_source()
495 vmw_vkms_set_crc_surface(struct drm_crtc *crtc, in vmw_vkms_set_crc_surface() argument
498 struct vmw_display_unit *du = vmw_crtc_to_du(crtc); in vmw_vkms_set_crc_surface()
499 struct vmw_private *vmw = vmw_priv(crtc->dev); in vmw_vkms_set_crc_surface()
527 * vmw_vkms_modeset_lock - Protects access to crtc during modeset
528 * @crtc: The crtc to lock for vkms
545 vmw_vkms_modeset_lock(struct drm_crtc *crtc) in vmw_vkms_modeset_lock() argument
547 struct vmw_display_unit *du = vmw_crtc_to_du(crtc); in vmw_vkms_modeset_lock()
564 drm_warn(crtc->dev, "VKMS lock expired! total_delay = %lld, ret = %d, cur = %d\n", in vmw_vkms_modeset_lock()
570 * vmw_vkms_modeset_lock_relaxed - Protects access to crtc during modeset
571 * @crtc: The crtc to lock for vkms
573 * Much like vmw_vkms_modeset_lock except that when the crtc is currently
579 vmw_vkms_modeset_lock_relaxed(struct drm_crtc *crtc) in vmw_vkms_modeset_lock_relaxed() argument
581 struct vmw_display_unit *du = vmw_crtc_to_du(crtc); in vmw_vkms_modeset_lock_relaxed()
600 drm_warn(crtc->dev, "VKMS relaxed lock expired!\n"); in vmw_vkms_modeset_lock_relaxed()
608 * vmw_vkms_vblank_trylock - Protects access to crtc during vblank
609 * @crtc: The crtc to lock for vkms
616 vmw_vkms_vblank_trylock(struct drm_crtc *crtc) in vmw_vkms_vblank_trylock() argument
618 struct vmw_display_unit *du = vmw_crtc_to_du(crtc); in vmw_vkms_vblank_trylock()
629 vmw_vkms_unlock(struct drm_crtc *crtc) in vmw_vkms_unlock() argument
631 struct vmw_display_unit *du = vmw_crtc_to_du(crtc); in vmw_vkms_unlock()