Lines Matching refs:vblank

101 	struct drm_vblank_crtc *vblank = &dev->vblank[pipe];  in store_vblank()  local
105 vblank->last = last; in store_vblank()
107 write_seqlock(&vblank->seqlock); in store_vblank()
108 vblank->time = t_vblank; in store_vblank()
109 vblank->count += vblank_count_inc; in store_vblank()
110 write_sequnlock(&vblank->seqlock); in store_vblank()
115 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_max_vblank_count() local
117 return vblank->max_vblank_count ?: dev->max_vblank_count; in drm_max_vblank_count()
207 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_update_vblank_count() local
212 int framedur_ns = vblank->framedur_ns; in drm_update_vblank_count()
234 diff = (cur_vblank - vblank->last) & max_vblank_count; in drm_update_vblank_count()
236 u64 diff_ns = ktime_to_ns(ktime_sub(t_vblank, vblank->time)); in drm_update_vblank_count()
267 if (diff > 1 && (vblank->inmodeset & 0x2)) { in drm_update_vblank_count()
275 pipe, vblank->count, diff, cur_vblank, vblank->last); in drm_update_vblank_count()
278 WARN_ON_ONCE(cur_vblank != vblank->last); in drm_update_vblank_count()
296 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_count() local
301 return vblank->count; in drm_vblank_count()
319 u64 vblank; in drm_crtc_accurate_vblank_count() local
328 vblank = drm_vblank_count(dev, pipe); in drm_crtc_accurate_vblank_count()
332 return vblank; in drm_crtc_accurate_vblank_count()
361 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_disable_and_save() local
378 if (!vblank->enabled) in drm_vblank_disable_and_save()
389 vblank->enabled = false; in drm_vblank_disable_and_save()
397 struct drm_vblank_crtc *vblank = from_timer(vblank, t, disable_timer); in vblank_disable_fn() local
398 struct drm_device *dev = vblank->dev; in vblank_disable_fn()
399 unsigned int pipe = vblank->pipe; in vblank_disable_fn()
403 if (atomic_read(&vblank->refcount) == 0 && vblank->enabled) { in vblank_disable_fn()
419 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_cleanup() local
421 WARN_ON(READ_ONCE(vblank->enabled) && in drm_vblank_cleanup()
424 del_timer_sync(&vblank->disable_timer); in drm_vblank_cleanup()
427 kfree(dev->vblank); in drm_vblank_cleanup()
454 dev->vblank = kcalloc(num_crtcs, sizeof(*dev->vblank), GFP_KERNEL); in drm_vblank_init()
455 if (!dev->vblank) in drm_vblank_init()
459 struct drm_vblank_crtc *vblank = &dev->vblank[i]; in drm_vblank_init() local
461 vblank->dev = dev; in drm_vblank_init()
462 vblank->pipe = i; in drm_vblank_init()
463 init_waitqueue_head(&vblank->queue); in drm_vblank_init()
464 timer_setup(&vblank->disable_timer, vblank_disable_fn, 0); in drm_vblank_init()
465 seqlock_init(&vblank->seqlock); in drm_vblank_init()
501 return &crtc->dev->vblank[drm_crtc_index(crtc)].queue; in drm_crtc_vblank_waitqueue()
522 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_calc_timestamping_constants() local
553 vblank->linedur_ns = linedur_ns; in drm_calc_timestamping_constants()
554 vblank->framedur_ns = framedur_ns; in drm_calc_timestamping_constants()
555 vblank->hwmode = *mode; in drm_calc_timestamping_constants()
607 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_calc_vbltimestamp_from_scanoutpos() local
628 mode = &vblank->hwmode; in drm_calc_vbltimestamp_from_scanoutpos()
792 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_count_and_time() local
802 seq = read_seqbegin(&vblank->seqlock); in drm_vblank_count_and_time()
803 vblank_count = vblank->count; in drm_vblank_count_and_time()
804 *vblanktime = vblank->time; in drm_vblank_count_and_time()
805 } while (read_seqretry(&vblank->seqlock, seq)); in drm_vblank_count_and_time()
958 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_enable() local
965 if (!vblank->enabled) { in drm_vblank_enable()
976 atomic_dec(&vblank->refcount); in drm_vblank_enable()
984 WRITE_ONCE(vblank->enabled, true); in drm_vblank_enable()
995 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_get() local
1007 if (atomic_add_return(1, &vblank->refcount) == 1) { in drm_vblank_get()
1010 if (!vblank->enabled) { in drm_vblank_get()
1011 atomic_dec(&vblank->refcount); in drm_vblank_get()
1038 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_put() local
1043 if (WARN_ON(atomic_read(&vblank->refcount) == 0)) in drm_vblank_put()
1047 if (atomic_dec_and_test(&vblank->refcount)) { in drm_vblank_put()
1051 vblank_disable_fn(&vblank->disable_timer); in drm_vblank_put()
1053 mod_timer(&vblank->disable_timer, in drm_vblank_put()
1084 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_wait_one_vblank() local
1097 ret = wait_event_timeout(vblank->queue, in drm_wait_one_vblank()
1136 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_crtc_vblank_off() local
1150 pipe, vblank->enabled, vblank->inmodeset); in drm_crtc_vblank_off()
1154 if (drm_core_check_feature(dev, DRIVER_ATOMIC) || !vblank->inmodeset) in drm_crtc_vblank_off()
1157 wake_up(&vblank->queue); in drm_crtc_vblank_off()
1163 if (!vblank->inmodeset) { in drm_crtc_vblank_off()
1164 atomic_inc(&vblank->refcount); in drm_crtc_vblank_off()
1165 vblank->inmodeset = 1; in drm_crtc_vblank_off()
1186 vblank->hwmode.crtc_clock = 0; in drm_crtc_vblank_off()
1207 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_crtc_vblank_reset() local
1214 if (!vblank->inmodeset) { in drm_crtc_vblank_reset()
1215 atomic_inc(&vblank->refcount); in drm_crtc_vblank_reset()
1216 vblank->inmodeset = 1; in drm_crtc_vblank_reset()
1246 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_crtc_set_max_vblank_count() local
1249 WARN_ON(!READ_ONCE(vblank->inmodeset)); in drm_crtc_set_max_vblank_count()
1251 vblank->max_vblank_count = max_vblank_count; in drm_crtc_set_max_vblank_count()
1269 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_crtc_vblank_on() local
1277 pipe, vblank->enabled, vblank->inmodeset); in drm_crtc_vblank_on()
1280 if (vblank->inmodeset) { in drm_crtc_vblank_on()
1281 atomic_dec(&vblank->refcount); in drm_crtc_vblank_on()
1282 vblank->inmodeset = 0; in drm_crtc_vblank_on()
1291 if (atomic_read(&vblank->refcount) != 0 || drm_vblank_offdelay == 0) in drm_crtc_vblank_on()
1313 struct drm_vblank_crtc *vblank; in drm_vblank_restore() local
1325 vblank = &dev->vblank[pipe]; in drm_vblank_restore()
1326 WARN_ONCE((drm_debug & DRM_UT_VBL) && !vblank->framedur_ns, in drm_vblank_restore()
1328 framedur_ns = vblank->framedur_ns; in drm_vblank_restore()
1335 diff_ns = ktime_to_ns(ktime_sub(t_vblank, vblank->time)); in drm_vblank_restore()
1341 diff, diff_ns, framedur_ns, cur_vblank - vblank->last); in drm_vblank_restore()
1365 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_legacy_vblank_pre_modeset() local
1381 if (!vblank->inmodeset) { in drm_legacy_vblank_pre_modeset()
1382 vblank->inmodeset = 0x1; in drm_legacy_vblank_pre_modeset()
1384 vblank->inmodeset |= 0x2; in drm_legacy_vblank_pre_modeset()
1391 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_legacy_vblank_post_modeset() local
1401 if (vblank->inmodeset) { in drm_legacy_vblank_post_modeset()
1406 if (vblank->inmodeset & 0x2) in drm_legacy_vblank_post_modeset()
1409 vblank->inmodeset = 0; in drm_legacy_vblank_post_modeset()
1455 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_queue_vblank_event() local
1487 if (!READ_ONCE(vblank->enabled)) { in drm_queue_vblank_event()
1576 struct drm_vblank_crtc *vblank; in drm_wait_vblank_ioctl() local
1624 vblank = &dev->vblank[pipe]; in drm_wait_vblank_ioctl()
1631 READ_ONCE(vblank->enabled)) { in drm_wait_vblank_ioctl()
1676 wait = wait_event_interruptible_timeout(vblank->queue, in drm_wait_vblank_ioctl()
1678 !READ_ONCE(vblank->enabled), in drm_wait_vblank_ioctl()
1749 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_handle_vblank() local
1768 if (!vblank->enabled) { in drm_handle_vblank()
1778 wake_up(&vblank->queue); in drm_handle_vblank()
1787 !atomic_read(&vblank->refcount)); in drm_handle_vblank()
1794 vblank_disable_fn(&vblank->disable_timer); in drm_handle_vblank()
1830 struct drm_vblank_crtc *vblank; in drm_crtc_get_sequence_ioctl() local
1849 vblank = &dev->vblank[pipe]; in drm_crtc_get_sequence_ioctl()
1850 vblank_enabled = dev->vblank_disable_immediate && READ_ONCE(vblank->enabled); in drm_crtc_get_sequence_ioctl()
1884 struct drm_vblank_crtc *vblank; in drm_crtc_queue_sequence_ioctl() local
1913 vblank = &dev->vblank[pipe]; in drm_crtc_queue_sequence_ioctl()
1947 if (!READ_ONCE(vblank->enabled)) { in drm_crtc_queue_sequence_ioctl()