/kernel/linux/linux-5.10/drivers/gpu/drm/ |
H A D | drm_vblank_work.c | 13 * DOC: vblank works 39 * particular vblank has passed, and then executes the work at realtime 46 void drm_handle_vblank_works(struct drm_vblank_crtc *vblank) in drm_handle_vblank_works() argument 49 u64 count = atomic64_read(&vblank->count); in drm_handle_vblank_works() 52 assert_spin_locked(&vblank->dev->event_lock); in drm_handle_vblank_works() 54 list_for_each_entry_safe(work, next, &vblank->pending_work, node) { in drm_handle_vblank_works() 59 drm_vblank_put(vblank->dev, vblank->pipe); in drm_handle_vblank_works() 60 kthread_queue_work(vblank->worker, &work->base); in drm_handle_vblank_works() 64 wake_up_all(&vblank in drm_handle_vblank_works() 70 drm_vblank_cancel_pending_works(struct drm_vblank_crtc *vblank) drm_vblank_cancel_pending_works() argument 109 struct drm_vblank_crtc *vblank = work->vblank; drm_vblank_work_schedule() local 184 struct drm_vblank_crtc *vblank = work->vblank; drm_vblank_work_cancel_sync() local 220 struct drm_vblank_crtc *vblank = work->vblank; drm_vblank_work_flush() local 249 drm_vblank_worker_init(struct drm_vblank_crtc *vblank) drm_vblank_worker_init() argument [all...] |
H A D | drm_vblank.c | 2 * drm_irq.c IRQ and vblank support 43 * DOC: vblank handling 54 * scanlines is referred to as the vertical blanking region, or vblank for 98 * this programming has to both start and end in the same vblank. To help 101 * The interrupt is in this context named the vblank interrupt. 103 * The vblank interrupt may be fired at different points depending on the 122 * drm_crtc_handle_vblank() in its vblank interrupt handler for working vblank 129 * call drm_crtc_vblank_get() and release the vblank reference again with 130 * drm_crtc_vblank_put(). In between these two calls vblank interrupt 173 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; store_vblank() local 187 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_max_vblank_count() local 278 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_update_vblank_count() local 369 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_vblank_count() local 404 u64 vblank; drm_crtc_accurate_vblank_count() local 445 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_vblank_disable_and_save() local 481 struct drm_vblank_crtc *vblank = from_timer(vblank, t, disable_timer); vblank_disable_fn() local 496 struct drm_vblank_crtc *vblank = ptr; drm_vblank_init_release() local 532 struct drm_vblank_crtc *vblank = &dev->vblank[i]; drm_vblank_init() local 607 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_calc_timestamping_constants() local 692 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_crtc_vblank_helper_get_vblank_timestamp_internal() local 932 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_vblank_count_and_time() local 1108 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_vblank_enable() local 1146 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_vblank_get() local 1189 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_vblank_put() local 1235 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_wait_one_vblank() local 1288 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_crtc_vblank_off() local 1367 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_crtc_vblank_reset() local 1407 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_crtc_set_max_vblank_count() local 1430 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_crtc_vblank_on() local 1473 struct drm_vblank_crtc *vblank; drm_vblank_restore() local 1527 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_legacy_vblank_pre_modeset() local 1553 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_legacy_vblank_post_modeset() local 1611 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_queue_vblank_event() local 1732 struct drm_vblank_crtc *vblank; drm_wait_vblank_ioctl() local 1914 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_handle_vblank() local 2004 struct drm_vblank_crtc *vblank; drm_crtc_get_sequence_ioctl() local 2060 struct drm_vblank_crtc *vblank; drm_crtc_queue_sequence_ioctl() local [all...] |
H A D | drm_internal.h | 112 static inline void drm_vblank_flush_worker(struct drm_vblank_crtc *vblank) in drm_vblank_flush_worker() argument 114 kthread_flush_worker(vblank->worker); in drm_vblank_flush_worker() 117 static inline void drm_vblank_destroy_worker(struct drm_vblank_crtc *vblank) in drm_vblank_destroy_worker() argument 119 if (vblank->worker) in drm_vblank_destroy_worker() 120 kthread_destroy_worker(vblank->worker); in drm_vblank_destroy_worker() 123 int drm_vblank_worker_init(struct drm_vblank_crtc *vblank); 124 void drm_vblank_cancel_pending_works(struct drm_vblank_crtc *vblank); 125 void drm_handle_vblank_works(struct drm_vblank_crtc *vblank);
|
H A D | drm_irq.c | 2 * drm_irq.c IRQ and vblank support 78 * need to set &drm_device.irq_enabled to signal the DRM core that vblank 96 * that vblank interrupts are available. 181 * vblank/irq handling. KMS drivers must ensure that vblanks are all in drm_irq_uninstall() 187 struct drm_vblank_crtc *vblank = &dev->vblank[i]; in drm_irq_uninstall() local 189 if (!vblank->enabled) in drm_irq_uninstall() 195 wake_up(&vblank->queue); in drm_irq_uninstall()
|
/kernel/linux/linux-6.6/drivers/gpu/drm/ |
H A D | drm_vblank_work.c | 13 * DOC: vblank works 39 * particular vblank has passed, and then executes the work at realtime 46 void drm_handle_vblank_works(struct drm_vblank_crtc *vblank) in drm_handle_vblank_works() argument 49 u64 count = atomic64_read(&vblank->count); in drm_handle_vblank_works() 52 assert_spin_locked(&vblank->dev->event_lock); in drm_handle_vblank_works() 54 list_for_each_entry_safe(work, next, &vblank->pending_work, node) { in drm_handle_vblank_works() 59 drm_vblank_put(vblank->dev, vblank->pipe); in drm_handle_vblank_works() 60 kthread_queue_work(vblank->worker, &work->base); in drm_handle_vblank_works() 64 wake_up_all(&vblank in drm_handle_vblank_works() 70 drm_vblank_cancel_pending_works(struct drm_vblank_crtc *vblank) drm_vblank_cancel_pending_works() argument 109 struct drm_vblank_crtc *vblank = work->vblank; drm_vblank_work_schedule() local 184 struct drm_vblank_crtc *vblank = work->vblank; drm_vblank_work_cancel_sync() local 220 struct drm_vblank_crtc *vblank = work->vblank; drm_vblank_work_flush() local 249 drm_vblank_worker_init(struct drm_vblank_crtc *vblank) drm_vblank_worker_init() argument [all...] |
H A D | drm_vblank.c | 2 * drm_irq.c IRQ and vblank support 43 * DOC: vblank handling 54 * scanlines is referred to as the vertical blanking region, or vblank for 98 * this programming has to both start and end in the same vblank. To help 101 * The interrupt is in this context named the vblank interrupt. 103 * The vblank interrupt may be fired at different points depending on the 122 * drm_crtc_handle_vblank() in its vblank interrupt handler for working vblank 129 * call drm_crtc_vblank_get() and release the vblank reference again with 130 * drm_crtc_vblank_put(). In between these two calls vblank interrupt 173 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; store_vblank() local 187 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_max_vblank_count() local 281 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_update_vblank_count() local 372 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_vblank_count() local 407 u64 vblank; drm_crtc_accurate_vblank_count() local 451 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_vblank_disable_and_save() local 487 struct drm_vblank_crtc *vblank = from_timer(vblank, t, disable_timer); vblank_disable_fn() local 502 struct drm_vblank_crtc *vblank = ptr; drm_vblank_init_release() local 538 struct drm_vblank_crtc *vblank = &dev->vblank[i]; drm_vblank_init() local 613 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_calc_timestamping_constants() local 698 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_crtc_vblank_helper_get_vblank_timestamp_internal() local 943 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_vblank_count_and_time() local 999 struct drm_vblank_crtc *vblank; drm_crtc_next_vblank_start() local 1165 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_vblank_enable() local 1203 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_vblank_get() local 1246 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_vblank_put() local 1292 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_wait_one_vblank() local 1345 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_crtc_vblank_off() local 1424 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_crtc_vblank_reset() local 1464 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_crtc_set_max_vblank_count() local 1487 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_crtc_vblank_on() local 1517 struct drm_vblank_crtc *vblank; drm_vblank_restore() local 1580 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_legacy_vblank_pre_modeset() local 1606 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_legacy_vblank_post_modeset() local 1664 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_queue_vblank_event() local 1794 struct drm_vblank_crtc *vblank; drm_wait_vblank_ioctl() local 1976 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_handle_vblank() local 2066 struct drm_vblank_crtc *vblank; drm_crtc_get_sequence_ioctl() local 2122 struct drm_vblank_crtc *vblank; drm_crtc_queue_sequence_ioctl() local [all...] |
H A D | drm_internal.h | 100 static inline void drm_vblank_flush_worker(struct drm_vblank_crtc *vblank) in drm_vblank_flush_worker() argument 102 kthread_flush_worker(vblank->worker); in drm_vblank_flush_worker() 105 static inline void drm_vblank_destroy_worker(struct drm_vblank_crtc *vblank) in drm_vblank_destroy_worker() argument 107 if (vblank->worker) in drm_vblank_destroy_worker() 108 kthread_destroy_worker(vblank->worker); in drm_vblank_destroy_worker() 111 int drm_vblank_worker_init(struct drm_vblank_crtc *vblank); 112 void drm_vblank_cancel_pending_works(struct drm_vblank_crtc *vblank); 113 void drm_handle_vblank_works(struct drm_vblank_crtc *vblank);
|
H A D | drm_irq.c | 2 * drm_irq.c IRQ and vblank support 127 * vblank/irq handling. KMS drivers must ensure that vblanks are all in drm_legacy_irq_uninstall() 133 struct drm_vblank_crtc *vblank = &dev->vblank[i]; in drm_legacy_irq_uninstall() local 135 if (!vblank->enabled) in drm_legacy_irq_uninstall() 141 wake_up(&vblank->queue); in drm_legacy_irq_uninstall()
|
/kernel/linux/linux-5.10/drivers/gpu/drm/nouveau/nvkm/engine/sw/ |
H A D | nv50.c | 42 container_of(notify, typeof(*chan), vblank.notify[notify->index]); in nv50_sw_chan_vblsem_release() 47 nvkm_wr32(device, 0x001710, 0x80000000 | chan->vblank.ctxdma); in nv50_sw_chan_vblsem_release() 51 nvkm_wr32(device, 0x001570, chan->vblank.offset); in nv50_sw_chan_vblsem_release() 52 nvkm_wr32(device, 0x001574, chan->vblank.value); in nv50_sw_chan_vblsem_release() 54 nvkm_wr32(device, 0x060010, chan->vblank.offset); in nv50_sw_chan_vblsem_release() 55 nvkm_wr32(device, 0x060014, chan->vblank.value); in nv50_sw_chan_vblsem_release() 68 case 0x018c: chan->vblank.ctxdma = data; return true; in nv50_sw_chan_mthd() 69 case 0x0400: chan->vblank.offset = data; return true; in nv50_sw_chan_mthd() 70 case 0x0404: chan->vblank.value = data; return true; in nv50_sw_chan_mthd() 72 if (data < device->disp->vblank in nv50_sw_chan_mthd() [all...] |
H A D | gf100.c | 42 container_of(notify, typeof(*chan), vblank.notify[notify->index]); in gf100_sw_chan_vblsem_release() 49 nvkm_wr32(device, 0x06000c, upper_32_bits(chan->vblank.offset)); in gf100_sw_chan_vblsem_release() 50 nvkm_wr32(device, 0x060010, lower_32_bits(chan->vblank.offset)); in gf100_sw_chan_vblsem_release() 51 nvkm_wr32(device, 0x060014, chan->vblank.value); in gf100_sw_chan_vblsem_release() 64 chan->vblank.offset &= 0x00ffffffffULL; in gf100_sw_chan_mthd() 65 chan->vblank.offset |= (u64)data << 32; in gf100_sw_chan_mthd() 68 chan->vblank.offset &= 0xff00000000ULL; in gf100_sw_chan_mthd() 69 chan->vblank.offset |= data; in gf100_sw_chan_mthd() 72 chan->vblank.value = data; in gf100_sw_chan_mthd() 75 if (data < device->disp->vblank in gf100_sw_chan_mthd() [all...] |
/kernel/linux/linux-6.6/drivers/gpu/drm/nouveau/nvkm/engine/sw/ |
H A D | nv50.c | 42 container_of(notify, typeof(*chan), vblank.notify[notify->id]); in nv50_sw_chan_vblsem_release() 47 nvkm_wr32(device, 0x001710, 0x80000000 | chan->vblank.ctxdma); in nv50_sw_chan_vblsem_release() 51 nvkm_wr32(device, 0x001570, chan->vblank.offset); in nv50_sw_chan_vblsem_release() 52 nvkm_wr32(device, 0x001574, chan->vblank.value); in nv50_sw_chan_vblsem_release() 54 nvkm_wr32(device, 0x060010, chan->vblank.offset); in nv50_sw_chan_vblsem_release() 55 nvkm_wr32(device, 0x060014, chan->vblank.value); in nv50_sw_chan_vblsem_release() 68 case 0x018c: chan->vblank.ctxdma = data; return true; in nv50_sw_chan_mthd() 69 case 0x0400: chan->vblank.offset = data; return true; in nv50_sw_chan_mthd() 70 case 0x0404: chan->vblank.value = data; return true; in nv50_sw_chan_mthd() 72 if (data < device->disp->vblank in nv50_sw_chan_mthd() [all...] |
H A D | gf100.c | 42 container_of(notify, typeof(*chan), vblank.notify[notify->id]); in gf100_sw_chan_vblsem_release() 49 nvkm_wr32(device, 0x06000c, upper_32_bits(chan->vblank.offset)); in gf100_sw_chan_vblsem_release() 50 nvkm_wr32(device, 0x060010, lower_32_bits(chan->vblank.offset)); in gf100_sw_chan_vblsem_release() 51 nvkm_wr32(device, 0x060014, chan->vblank.value); in gf100_sw_chan_vblsem_release() 64 chan->vblank.offset &= 0x00ffffffffULL; in gf100_sw_chan_mthd() 65 chan->vblank.offset |= (u64)data << 32; in gf100_sw_chan_mthd() 68 chan->vblank.offset &= 0xff00000000ULL; in gf100_sw_chan_mthd() 69 chan->vblank.offset |= data; in gf100_sw_chan_mthd() 72 chan->vblank.value = data; in gf100_sw_chan_mthd() 75 if (data < device->disp->vblank in gf100_sw_chan_mthd() [all...] |
/kernel/linux/linux-6.6/drivers/gpu/drm/i915/display/ |
H A D | intel_vblank.c | 23 * start of vblank: 26 * generate start of vblank interrupt (gen4+) 29 * | generate frame start interrupt (aka. vblank interrupt) (gmch) 58 * (depending on TRANSCONF settings) after the start of vblank 69 struct drm_vblank_crtc *vblank = &dev_priv->drm.vblank[drm_crtc_index(crtc)]; in i915_get_vblank_counter() local 70 const struct drm_display_mode *mode = &vblank->hwmode; in i915_get_vblank_counter() 79 * vblank wait before enabling the TV encoder and so we in i915_get_vblank_counter() 80 * have to enable vblank interrupts while the frame counter in i915_get_vblank_counter() 81 * is still in a working state. However the core vblank cod in i915_get_vblank_counter() 122 struct drm_vblank_crtc *vblank = &dev_priv->drm.vblank[drm_crtc_index(crtc)]; g4x_get_vblank_counter() local 134 struct drm_vblank_crtc *vblank = intel_crtc_scanlines_since_frame_timestamp() local 180 struct drm_vblank_crtc *vblank = __intel_get_crtc_scanline_from_timestamp() local 203 struct drm_vblank_crtc *vblank; __intel_get_crtc_scanline() local [all...] |
/kernel/linux/linux-5.10/drivers/gpu/drm/vkms/ |
H A D | vkms_crtc.c | 22 pr_warn("%s: vblank timer overrun\n", __func__); in vkms_vblank_simulate() 27 DRM_ERROR("vkms failure on handling vblank"); in vkms_vblank_simulate() 60 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in vkms_enable_vblank() local 67 out->period_ns = ktime_set(0, vblank->framedur_ns); in vkms_enable_vblank() 88 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in vkms_get_vblank_timestamp() local 90 if (!READ_ONCE(vblank->enabled)) { in vkms_get_vblank_timestamp() 97 if (WARN_ON(*vblank_time == vblank->time)) in vkms_get_vblank_timestamp() 103 * only generated after all the vblank register in vkms_get_vblank_timestamp() [all...] |
/kernel/linux/linux-6.6/drivers/gpu/drm/vkms/ |
H A D | vkms_crtc.c | 26 pr_warn("%s: vblank timer overrun\n", __func__); in vkms_vblank_simulate() 31 DRM_ERROR("vkms failure on handling vblank"); in vkms_vblank_simulate() 66 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in vkms_enable_vblank() local 73 out->period_ns = ktime_set(0, vblank->framedur_ns); in vkms_enable_vblank() 94 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in vkms_get_vblank_timestamp() local 96 if (!READ_ONCE(vblank->enabled)) { in vkms_get_vblank_timestamp() 103 if (WARN_ON(*vblank_time == vblank->time)) in vkms_get_vblank_timestamp() 109 * only generated after all the vblank register in vkms_get_vblank_timestamp() [all...] |
/kernel/linux/linux-5.10/drivers/media/test-drivers/vivid/ |
H A D | vivid-osd.c | 74 struct fb_vblank vblank; in vivid_fb_ioctl() local 76 memset(&vblank, 0, sizeof(vblank)); in vivid_fb_ioctl() 77 vblank.flags = FB_VBLANK_HAVE_COUNT | FB_VBLANK_HAVE_VCOUNT | in vivid_fb_ioctl() 79 vblank.count = 0; in vivid_fb_ioctl() 80 vblank.vcount = 0; in vivid_fb_ioctl() 81 vblank.hcount = 0; in vivid_fb_ioctl() 82 if (copy_to_user((void __user *)arg, &vblank, sizeof(vblank))) in vivid_fb_ioctl()
|
/kernel/linux/linux-6.6/drivers/media/test-drivers/vivid/ |
H A D | vivid-osd.c | 74 struct fb_vblank vblank; in vivid_fb_ioctl() local 76 memset(&vblank, 0, sizeof(vblank)); in vivid_fb_ioctl() 77 vblank.flags = FB_VBLANK_HAVE_COUNT | FB_VBLANK_HAVE_VCOUNT | in vivid_fb_ioctl() 79 vblank.count = 0; in vivid_fb_ioctl() 80 vblank.vcount = 0; in vivid_fb_ioctl() 81 vblank.hcount = 0; in vivid_fb_ioctl() 82 if (copy_to_user((void __user *)arg, &vblank, sizeof(vblank))) in vivid_fb_ioctl()
|
/kernel/linux/linux-6.6/drivers/gpu/drm/loongson/ |
H A D | loongson_module.c | 17 MODULE_PARM_DESC(vblank, "Disable/Enable hw vblank support"); 18 module_param_named(vblank, loongson_vblank, int, 0400);
|
/kernel/linux/linux-5.10/drivers/video/fbdev/matrox/ |
H A D | matroxfb_crtc2.c | 403 static int matroxfb_dh_get_vblank(const struct matroxfb_dh_fb_info* m2info, struct fb_vblank* vblank) { in matroxfb_dh_get_vblank() argument 407 memset(vblank, 0, sizeof(*vblank)); in matroxfb_dh_get_vblank() 408 vblank->flags = FB_VBLANK_HAVE_VCOUNT | FB_VBLANK_HAVE_VBLANK; in matroxfb_dh_get_vblank() 410 vblank->vcount = mga_inl(0x3C48) & 0x000007FF; in matroxfb_dh_get_vblank() 412 if (vblank->vcount >= m2info->fbcon.var.yres) in matroxfb_dh_get_vblank() 413 vblank->flags |= FB_VBLANK_VBLANKING; in matroxfb_dh_get_vblank() 415 vblank->flags |= FB_VBLANK_HAVE_COUNT; in matroxfb_dh_get_vblank() 418 vblank->count = minfo->crtc2.vsync.cnt; in matroxfb_dh_get_vblank() 435 struct fb_vblank vblank; in matroxfb_dh_ioctl() local [all...] |
/kernel/linux/linux-6.6/drivers/media/i2c/ |
H A D | imx412.c | 85 * @vblank: Vertical blanking in lines 97 u32 vblank; member 127 * @vblank: Vertical blanking in lines 149 u32 vblank; member 399 .vblank = 506, 534 mode->vblank_max, 1, mode->vblank); in imx412_update_controls() 550 lpfr = imx412->vblank + imx412->cur_mode->height; in imx412_update_exp_gain() 598 imx412->vblank = imx412->vblank_ctrl->val; in imx412_set_ctrl() 600 dev_dbg(imx412->dev, "Received vblank %u, new lpfr %u", in imx412_set_ctrl() 601 imx412->vblank, in imx412_set_ctrl() [all...] |
H A D | imx335.c | 84 * @vblank: Vertical blanking in lines 96 u32 vblank; member 119 * @vblank: Vertical blanking in lines 140 u32 vblank; member 243 .vblank = 2560, 382 mode->vblank_max, 1, mode->vblank); in imx335_update_controls() 398 lpfr = imx335->vblank + imx335->cur_mode->height; in imx335_update_exp_gain() 446 imx335->vblank = imx335->vblank_ctrl->val; in imx335_set_ctrl() 448 dev_dbg(imx335->dev, "Received vblank %u, new lpfr %u", in imx335_set_ctrl() 449 imx335->vblank, in imx335_set_ctrl() [all...] |
/kernel/linux/linux-6.6/drivers/video/fbdev/matrox/ |
H A D | matroxfb_crtc2.c | 403 static int matroxfb_dh_get_vblank(const struct matroxfb_dh_fb_info* m2info, struct fb_vblank* vblank) { in matroxfb_dh_get_vblank() argument 407 memset(vblank, 0, sizeof(*vblank)); in matroxfb_dh_get_vblank() 408 vblank->flags = FB_VBLANK_HAVE_VCOUNT | FB_VBLANK_HAVE_VBLANK; in matroxfb_dh_get_vblank() 410 vblank->vcount = mga_inl(0x3C48) & 0x000007FF; in matroxfb_dh_get_vblank() 412 if (vblank->vcount >= m2info->fbcon.var.yres) in matroxfb_dh_get_vblank() 413 vblank->flags |= FB_VBLANK_VBLANKING; in matroxfb_dh_get_vblank() 415 vblank->flags |= FB_VBLANK_HAVE_COUNT; in matroxfb_dh_get_vblank() 418 vblank->count = minfo->crtc2.vsync.cnt; in matroxfb_dh_get_vblank() 435 struct fb_vblank vblank; in matroxfb_dh_ioctl() local [all...] |
/kernel/linux/linux-5.10/drivers/gpu/drm/nouveau/nvkm/engine/disp/ |
H A D | base.c | 45 struct nvkm_disp *disp = container_of(event, typeof(*disp), vblank); in nvkm_disp_vblank_fini() 54 struct nvkm_disp *disp = container_of(event, typeof(*disp), vblank); in nvkm_disp_vblank_init() 65 container_of(notify->event, typeof(*disp), vblank); in nvkm_disp_vblank_ctor() 73 if (ret = -ENXIO, req->v0.head <= disp->vblank.index_nr) { in nvkm_disp_vblank_ctor() 94 nvkm_event_send(&disp->vblank, 1, head, &rep, sizeof(rep)); in nvkm_disp_vblank() 137 *event = &disp->vblank; in nvkm_disp_ntfy() 420 return nvkm_event_init(&nvkm_disp_vblank_func, 1, i, &disp->vblank); in nvkm_disp_oneinit() 434 nvkm_event_fini(&disp->vblank); in nvkm_disp_dtor()
|
/kernel/linux/linux-5.10/drivers/gpu/drm/gma500/ |
H A D | mdfld_device.c | 195 pipe->vblank = PSB_RVDC32(map->vblank); in mdfld_save_display_registers() 321 PSB_WVDC32(pipe->vblank, map->vblank); in mdfld_restore_display_registers() 450 .vblank = VBLANK_A, 472 .vblank = VBLANK_B, 495 .vblank = VBLANK_C,
|
/kernel/linux/linux-6.6/drivers/gpu/drm/amd/amdgpu/ |
H A D | amdgpu_vkms.c | 55 DRM_WARN("%s: vblank timer overrun\n", __func__); in amdgpu_vkms_vblank_simulate() 58 /* Don't queue timer again when vblank is disabled. */ in amdgpu_vkms_vblank_simulate() 69 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in amdgpu_vkms_enable_vblank() local 75 out->period_ns = ktime_set(0, vblank->framedur_ns); in amdgpu_vkms_enable_vblank() 96 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in amdgpu_vkms_get_vblank_timestamp() local 99 if (!READ_ONCE(vblank->enabled)) { in amdgpu_vkms_get_vblank_timestamp() 106 if (WARN_ON(*vblank_time == vblank->time)) in amdgpu_vkms_get_vblank_timestamp() 112 * only generated after all the vblank register in amdgpu_vkms_get_vblank_timestamp() [all...] |