Home
last modified time | relevance | path

Searched full:vblank (Results 1 – 25 of 130) sorted by relevance

123456

/linux/drivers/gpu/drm/nouveau/nvkm/engine/sw/
H A Dnv50.c42 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.index_nr) { in nv50_sw_chan_mthd()
[all …]
H A Dgf100.c42 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.index_nr) { in gf100_sw_chan_mthd()
[all …]
/linux/include/drm/
H A Ddrm_device.h267 * If true, vblank interrupt will be disabled immediately when the
268 * refcount drops to zero, as opposed to via the vblank disable
271 * This can be set to true it the hardware has a working vblank counter
281 * @vblank:
283 * Array of vblank tracking structures, one per &struct drm_crtc. For
284 * historical reasons (vblank support predates kernel modesetting) this
288 struct drm_vblank_crtc *vblank; member
293 * Protects vblank count and time updates during vblank enable/disable
297 * @vbl_lock: Top-level vblank references lock, wraps the low-level
305 * Maximum value of the vblank registers. This value +1 will result in a
[all …]
H A Ddrm_vblank_work.h12 * vblank passes, and then executes at realtime priority outside of IRQ
32 * @vblank: A pointer to &drm_vblank_crtc this work item belongs to.
34 struct drm_vblank_crtc *vblank; member
37 * @count: The target vblank this work will execute on. Drivers should
H A Ddrm_flip_work.h34 * Utility to queue up work to run from work-queue context after flip/vblank.
36 * bo's, etc until after vblank. The APIs are all thread-safe. Moreover,
/linux/drivers/gpu/drm/amd/display/amdgpu_dm/tests/
H A Damdgpu_dm_crtc_test.c828 * dm_test_crtc_enable_vblank_rejects_unconfigured - Test vblank enable on disabled CRTC
831 * Enabling vblank on a CRTC that is not enabled must be rejected with -EINVAL
904 * dm_test_crtc_setup_enable - Build an adev/CRTC primed for the vblank enable path.
910 * (enabled) CRTC with crtc_id 0, an initialized single-pipe vblank array, a DC
967 * with no vblank workqueue queued.
1064 * enable path so it returns 0 without queuing any vblank control work.
1078 /* Mid-reset: return 0 before the vblank workqueue branch is reached. */ in dm_test_crtc_enable_vblank_in_reset()
1085 * dm_test_crtc_enable_vblank_queues_work - Test enable queues vblank control work
1088 * With a vblank control workqueue installed, the enable path allocates a work
1090 * runs the worker, which bumps the active vblank IRQ count. The initial ISM
[all …]
/linux/drivers/gpu/drm/vmwgfx/
H A Dvmwgfx_vkms.c123 * We raced with the vblank hrtimer and previous work already computed in crc_generate_worker()
154 * The worker can fall behind the vblank hrtimer, make sure we catch up. in crc_generate_worker()
477 * @du: The vmw_display_unit from which to grab the vblank timings
480 * default uses a time of a single frame and in case where vblank
487 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); in vmw_vkms_lock_max_wait_ns() local
489 if (!vblank || !vblank->framedur_ns) in vmw_vkms_lock_max_wait_ns()
492 return vblank->framedur_ns; in vmw_vkms_lock_max_wait_ns()
501 * e.g. the vblank simulator to be trying to access incomplete state
509 * atomic context (the vblank handler) with the non-atomic entirity
577 * vmw_vkms_vblank_trylock - Protects access to crtc during vblank
[all …]
/linux/drivers/gpu/drm/
H A Ddrm_internal.h120 static inline void drm_vblank_flush_worker(struct drm_vblank_crtc *vblank) in drm_vblank_flush_worker() argument
122 kthread_flush_worker(vblank->worker); in drm_vblank_flush_worker()
125 static inline void drm_vblank_destroy_worker(struct drm_vblank_crtc *vblank) in drm_vblank_destroy_worker() argument
127 if (vblank->worker) in drm_vblank_destroy_worker()
128 kthread_destroy_worker(vblank->worker); in drm_vblank_destroy_worker()
131 int drm_vblank_worker_init(struct drm_vblank_crtc *vblank);
132 void drm_vblank_cancel_pending_works(struct drm_vblank_crtc *vblank);
133 void drm_handle_vblank_works(struct drm_vblank_crtc *vblank);
H A Ddrm_flip_work.c86 * drm_flip_work_queue()) at any point (from vblank irq and/or
87 * prior), and then from vblank irq commit the queued work.
/linux/drivers/gpu/drm/loongson/
H A Dloongson_module.c17 MODULE_PARM_DESC(vblank, "Disable/Enable hw vblank support");
18 module_param_named(vblank, loongson_vblank, int, 0400);
/linux/drivers/gpu/drm/omapdrm/
H A Domap_irq.c103 * omap_irq_enable_vblank - enable vblank interrupt events
106 * Enable vblank interrupts for @crtc. If the device doesn't have
107 * a hardware vblank counter, this routine should be a no-op, since
111 * Zero on success, appropriate errno if the given @crtc's vblank
133 * omap_irq_disable_vblank - disable vblank interrupt events
136 * Disable vblank interrupts for @crtc. If the device doesn't have
137 * a hardware vblank counter, this routine should be a no-op, since
/linux/drivers/gpu/drm/msm/disp/dpu1/
H A Ddpu_encoder_phys.h33 * Masters have extra responsibilities, like managing the VBLANK IRQ.
76 * @control_vblank_irq Register/Deregister for VBLANK IRQ
81 * @wait_for_vblank: Wait for VBLANK, for sub-driver internal use
157 * @vblank_ctl_lock: Vblank ctl mutex lock to protect vblank_refcount
163 * @vblank_refcount: Reference count of vblank request
167 * vs. the number of done/vblank irqs. Should hover
239 * @pending_vblank_cnt: Atomic counter tracking pending wait for VBLANK
240 * @pending_vblank_wq: Wait queue for blocking until VBLANK received
/linux/drivers/video/fbdev/matrox/
H A Dmatroxfb_crtc2.c403 …ic 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
438 err = matroxfb_dh_get_vblank(m2info, &vblank); in matroxfb_dh_ioctl()
[all …]
/linux/drivers/gpu/drm/nouveau/nvkm/engine/disp/
H A Dbase.c41 struct nvkm_disp *disp = container_of(event, typeof(*disp), vblank); in nvkm_disp_vblank_fini()
50 struct nvkm_disp *disp = container_of(event, typeof(*disp), vblank); in nvkm_disp_vblank_init()
65 nvkm_event_ntfy(&disp->vblank, head, NVKM_DISP_HEAD_EVENT_VBLANK); in nvkm_disp_vblank()
165 return nvkm_event_init(&nvkm_disp_vblank_func, subdev, 1, i, &disp->vblank); in nvkm_disp_oneinit()
188 nvkm_event_fini(&disp->vblank); in nvkm_disp_dtor()
/linux/Documentation/devicetree/bindings/display/imx/
H A Dnxp,imx8mq-dcss.yaml34 - description: DTG interrupt for Vblank
40 - const: vblank
90 interrupt-names = "ctxld", "ctxld_kick", "vblank";
/linux/drivers/gpu/drm/vkms/
H A Dvkms_drv.h179 * yet. Used by vblank to detect if the composer is too slow.
208 * @vblank_hrtimer: Timer used to trigger the vblank
209 * @period_ns: vblank period, in nanoseconds, used to configure @vblank_hrtimer and to compute
210 * vblank timestamps
/linux/drivers/gpu/drm/gma500/
H A Dpsb_irq.c263 if (dev->vblank[0].enabled) in gma_irq_preinstall()
265 if (dev->vblank[1].enabled) in gma_irq_preinstall()
296 if (dev->vblank[i].enabled) in gma_irq_postinstall()
354 if (dev->vblank[i].enabled) in gma_irq_uninstall()
468 dev_err(dev->dev, "trying to get vblank count for disabled pipe %u\n", in gma_crtc_get_vblank_counter()
H A Doaktrail_device.c149 p->vblank = PSB_RVDC32(VBLANK_A); in oaktrail_save_display_registers()
269 PSB_WVDC32(p->vblank, VBLANK_A); in oaktrail_restore_display_registers()
407 .vblank = VBLANK_A,
431 .vblank = VBLANK_B,
H A Dgma_display.c282 /* Turn off vblank interrupts */ in gma_crtc_dpms()
285 /* Wait for vblank for the disable to take effect */ in gma_crtc_dpms()
305 /* Wait for vblank for the disable to take effect. */ in gma_crtc_dpms()
539 /* Call this locked if we want an event at vblank interrupt. */ in gma_crtc_page_flip()
600 crtc_state->saveVBLANK = REG_READ(map->vblank); in gma_crtc_save()
654 REG_WRITE(map->vblank, crtc_state->saveVBLANK); in gma_crtc_restore()
/linux/drivers/video/fbdev/core/
H A Dfbmon.c1028 u32 vblank; member
1038 * vblank = right_margin + vsync_len + left_margin
1050 u32 vblank; in fb_get_vblank() local
1052 vblank = (hfreq * FLYBACK)/1000; in fb_get_vblank()
1053 vblank = (vblank + 500)/1000; in fb_get_vblank()
1054 return (vblank + V_FRONTPORCH); in fb_get_vblank()
1156 timings->vblank = fb_get_vblank(timings->hfreq); in fb_timings_vfreq()
1157 timings->vtotal = timings->vactive + timings->vblank; in fb_timings_vfreq()
1166 timings->vblank = fb_get_vblank(timings->hfreq); in fb_timings_hfreq()
1167 timings->vtotal = timings->vactive + timings->vblank; in fb_timings_hfreq()
[all …]
/linux/drivers/gpu/drm/amd/amdgpu/
H A Damdgpu_encoders.c170 unsigned int vblank = native_mode->vtotal - native_mode->vdisplay; in amdgpu_panel_mode_fixup() local
186 adjusted_mode->vtotal = native_mode->vdisplay + vblank; in amdgpu_panel_mode_fixup()
199 adjusted_mode->crtc_vtotal = adjusted_mode->crtc_vdisplay + vblank; in amdgpu_panel_mode_fixup()
/linux/drivers/sh/maple/
H A Dmaple.c99 /* set trig type to 0 for software trigger, 1 for hardware (VBLANK) */ in maple_dma_reset()
104 * bit 12 hard trigger - set 0 to keep responding to VBLANK in maple_dma_reset()
106 * bits 3 - 0 delay (in 1.3ms) between VBLANK and start of DMA in maple_dma_reset()
445 /* VBLANK bottom half - implemented via workqueue */
736 IRQF_SHARED, "maple bus VBLANK", &maple_unsupported_device); in maple_set_vblank_interrupt_handler()
821 /* set up VBLANK interrupt handler */ in maple_bus_init()
824 dev_err(&maple_bus, "bus failed to grab VBLANK IRQ\n"); in maple_bus_init()
/linux/drivers/gpu/drm/sprd/
H A Dsprd_drm.c91 /* vblank init */ in sprd_drm_bind()
94 drm_err(drm, "failed to initialize vblank.\n"); in sprd_drm_bind()
/linux/drivers/media/i2c/
H A Dt4ka3.c83 /* FIXME: need a datasheet to verify the min + max vblank values */
122 struct v4l2_ctrl *vblank; member
304 int exp_max = fmt->height + sensor->ctrls.vblank->val - in t4ka3_update_exposure_range()
393 /* vblank range is height dependent adjust and reset to default */ in t4ka3_set_pad_format()
395 ret = __v4l2_ctrl_modify_range(sensor->ctrls.vblank, min, max, 1, def); in t4ka3_set_pad_format()
399 ret = __v4l2_ctrl_s_ctrl(sensor->ctrls.vblank, def); in t4ka3_set_pad_format()
476 /* Update exposure range on vblank changes */ in t4ka3_s_ctrl()
860 ctrls->vblank = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_VBLANK, in t4ka3_init_controls()
H A Dov2680.c131 struct v4l2_ctrl *vblank; member
400 /* VTS gets set by the vblank ctrl */ in ov2680_set_mode()
476 int exp_max = sensor->mode.fmt.height + sensor->ctrls.vblank->val - in ov2680_exposure_update_range()
678 /* vblank range is height dependent adjust and reset to default */ in ov2680_set_fmt()
681 ret = __v4l2_ctrl_modify_range(sensor->ctrls.vblank, OV2680_MIN_VBLANK, in ov2680_set_fmt()
686 ret = __v4l2_ctrl_s_ctrl(sensor->ctrls.vblank, def); in ov2680_set_fmt()
868 /* Update exposure range on vblank changes */ in ov2680_s_ctrl()
1000 ctrls->vblank = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_VBLANK, in ov2680_v4l2_register()

123456