Home
last modified time | relevance | path

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

123456789

/linux/drivers/gpu/drm/
H A Ddrm_vblank.c2 * 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
186 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); store_vblank() local
200 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_max_vblank_count() local
289 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_update_vblank_count() local
380 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_vblank_count() local
415 u64 vblank; drm_crtc_accurate_vblank_count() local
454 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_vblank_disable_and_save() local
490 struct drm_vblank_crtc *vblank = timer_container_of(vblank, t, vblank_disable_fn() local
506 struct drm_vblank_crtc *vblank = ptr; drm_vblank_init_release() local
542 struct drm_vblank_crtc *vblank = &dev->vblank[i]; drm_vblank_init() local
617 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); drm_calc_timestamping_constants() local
701 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; drm_crtc_vblank_helper_get_vblank_timestamp_internal() local
943 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_vblank_count_and_time() local
998 struct drm_vblank_crtc *vblank; drm_crtc_next_vblank_start() local
1159 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_vblank_enable() local
1197 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_vblank_get() local
1240 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_vblank_put() local
1288 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_wait_one_vblank() local
1341 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); drm_crtc_vblank_off() local
1419 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); drm_crtc_vblank_reset() local
1458 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); drm_crtc_set_max_vblank_count() local
1485 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); drm_crtc_vblank_on_config() local
1540 struct drm_vblank_crtc *vblank; drm_vblank_restore() local
1595 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_crtc_vblank_restore() local
1610 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_queue_vblank_event() local
1736 struct drm_vblank_crtc *vblank; drm_wait_vblank_ioctl() local
1918 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_handle_vblank() local
2008 struct drm_vblank_crtc *vblank; drm_crtc_get_sequence_ioctl() local
2065 struct drm_vblank_crtc *vblank; drm_crtc_queue_sequence_ioctl() local
[all...]
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);
/linux/include/drm/
H A Ddrm_vblank.h41 * struct drm_pending_vblank_event - pending vblank event tracking
68 * Event payload for vblank events, requested through
83 * struct drm_vblank_crtc_config - vblank configuration for a CRTC
87 * @offdelay_ms: Vblank off delay in ms, used to determine how long
96 * for the exact semantics of immediate vblank disabling.
108 * struct drm_vblank_crtc_timer - vblank timer for a CRTC
112 * @timer: The vblank's high-resolution timer
130 * struct drm_vblank_crtc - vblank tracking for a CRTC
132 * This structure tracks the vblank state for one CRTC.
134 * Note that for historical reasons - the vblank handlin
[all...]
H A Ddrm_device.h252 * If true, vblank interrupt will be disabled immediately when the
253 * refcount drops to zero, as opposed to via the vblank disable
256 * This can be set to true it the hardware has a working vblank counter
266 * @vblank:
268 * Array of vblank tracking structures, one per &struct drm_crtc. For
269 * historical reasons (vblank support predates kernel modesetting) this
273 struct drm_vblank_crtc *vblank; member
278 * Protects vblank count and time updates during vblank enable/disable
282 * @vbl_lock: Top-level vblank references lock, wraps the low-level
290 * 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/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/drivers/gpu/drm/amd/display/amdgpu_dm/
H A Damdgpu_dm_crtc.c106 * @vblank_enabled: indicates whether the DRM vblank counter is currently
111 * The DRM vblank counter enable/disable action is used as the trigger to enable
117 * - vblank counter is disabled
121 * - Keep enabled even when vblank counter gets enabled
125 * - Disable when vblank counter is enabled
265 * Control PSR based on vblank requirements from OS in amdgpu_dm_crtc_vblank_control_worker()
269 * requests vblank events). Fast atomic commits will simply trigger a in amdgpu_dm_crtc_vblank_control_worker()
313 "Reject vblank enable on unconfigured CRTC %d (enabled=%d)\n", in amdgpu_dm_crtc_set_vblank()
322 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); in amdgpu_dm_crtc_set_vblank() local
329 * IPS & self-refresh feature can cause vblank counter resets between in amdgpu_dm_crtc_set_vblank()
[all …]
/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
H A Ddpu_crtc.h127 * @event : Pointer to last received drm vblank event. If there is a
128 * pending vblank event, this will be non-null.
133 * @vblank_cb_count : count of vblank callback since last reset
135 * @vblank_cb_time : ktime at vblank count reset
138 * safe to make decisions on during VBLANK on/off work
/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/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/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/radeon/
H A Dradeon_kms.c740 * VBlank related functions. in radeon_driver_postclose_kms()
764 * of vblank, as is required by DRM core vblank counter handling. in radeon_get_vblank_counter_kms()
766 * incremented at start of vblank. We measure distance to start of in radeon_get_vblank_counter_kms()
767 * vblank in vpos. vpos therefore will be >= 0 between start of vblank in radeon_get_vblank_counter_kms()
778 * distance to start of vblank, instead of regular in radeon_get_vblank_counter_kms()
792 DRM_DEBUG_VBL("crtc %u: dist from vblank start %d\n", in radeon_get_vblank_counter_kms()
795 /* Bump counter if we are at >= leading edge of vblank, in radeon_get_vblank_counter_kms()
813 * radeon_enable_vblank_kms - enable vblank interrup in radeon_get_vblank_counter_kms()
[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/mcde/
H A Dmcde_display.c78 bool vblank = false; in mcde_display_irq()
115 /* Vblank from one of the channels */ in mcde_display_irq()
117 dev_dbg(mcde->dev, "chnl A vblank IRQ\n"); in mcde_display_irq()
118 vblank = true; in mcde_display_irq()
121 dev_dbg(mcde->dev, "chnl B vblank IRQ\n"); in mcde_display_irq()
122 vblank = true; in mcde_display_irq()
125 dev_dbg(mcde->dev, "chnl C0 vblank IRQ\n"); in mcde_display_irq()
127 dev_dbg(mcde->dev, "chnl C1 vblank IRQ\n"); in mcde_display_irq()
134 if (vblank) in mcde_display_irq()
1396 * Handle any pending event first, we need to arm the vblank in mcde_display_update()
77 bool vblank = false; mcde_display_irq() local
[all...]
/linux/drivers/gpu/drm/amd/amdgpu/
H A Damdgpu_display.c1579 * USE_REAL_VBLANKSTART to use the real start of vblank instead in amdgpu_display_get_crtc_scanoutpos()
1580 * of a fudged earlier start of vblank. in amdgpu_display_get_crtc_scanoutpos()
1583 * fudged earlier start of vblank in *vpos and the distance in amdgpu_display_get_crtc_scanoutpos()
1584 * to true start of vblank in *hpos. in amdgpu_display_get_crtc_scanoutpos()
1594 * Returns vpos as a negative number inside vblank, counting the number in amdgpu_display_get_crtc_scanoutpos()
1595 * of scanlines to go until end of vblank, e.g., -1 means "one scanline in amdgpu_display_get_crtc_scanoutpos()
1596 * until start of active scanout / end of vblank." in amdgpu_display_get_crtc_scanoutpos()
1601 * DRM_SCANOUTPOS_INVBL = Inside vblank. in amdgpu_display_get_crtc_scanoutpos()
1637 /* Valid vblank area boundaries from gpu retrieved? */ in amdgpu_display_get_crtc_scanoutpos()
1649 /* Called from driver internal vblank counte in amdgpu_display_get_crtc_scanoutpos()
[all...]
/linux/drivers/media/i2c/
H A Dmt9v011.c202 unsigned height, width, hblank, vblank, speed; in calc_fps() local
210 vblank = mt9v011_read(sd, R06_MT9V011_VBLANK); in calc_fps()
214 t_time = row_time * (height + vblank + 1); in calc_fps()
232 unsigned height, width, hblank, vblank; in calc_speed() local
243 vblank = mt9v011_read(sd, R06_MT9V011_VBLANK); in calc_speed()
246 line_time = height + vblank + 1; in calc_speed()
277 * hblank and vblank should be adjusted, in order to warrant that in set_res()
/linux/drivers/gpu/drm/gma500/
H A Dpsb_irq.c265 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); in gma_irq_preinstall()
267 if (vblank->enabled) { in gma_irq_preinstall()
302 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); in gma_irq_postinstall()
304 if (vblank->enabled) in gma_irq_postinstall()
362 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); in gma_irq_uninstall()
364 if (vblank->enabled) in gma_irq_uninstall()
478 dev_err(dev->dev, "trying to get vblank count for disabled pipe %u\n", in gma_crtc_get_vblank_counter()
/linux/drivers/gpu/drm/tve200/
H A Dtve200_display.c41 * Vblank IRQ in tve200_irq()
44 * the vblank IRQ, firing many more interrupts. We counter this in tve200_irq()
45 * by toggling the IRQ back and forth from firing at vblank and in tve200_irq()
48 * frame, one at start of Vblank (that we make call into the CRTC) and in tve200_irq()
/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/video/fbdev/core/
H A Dfbmon.c1026 u32 vblank; member
1036 * vblank = right_margin + vsync_len + left_margin
1048 u32 vblank; in fb_get_vblank() local
1050 vblank = (hfreq * FLYBACK)/1000; in fb_get_vblank()
1051 vblank = (vblank + 500)/1000; in fb_get_vblank()
1052 return (vblank + V_FRONTPORCH); in fb_get_vblank()
1154 timings->vblank = fb_get_vblank(timings->hfreq); in fb_timings_vfreq()
1155 timings->vtotal = timings->vactive + timings->vblank; in fb_timings_vfreq()
1164 timings->vblank = fb_get_vblank(timings->hfreq); in fb_timings_hfreq()
1165 timings->vtotal = timings->vactive + timings->vblank; in fb_timings_hfreq()
[all …]
/linux/drivers/gpu/drm/xlnx/
H A Dzynqmp_kms.c215 /* Delay of 3 vblank intervals for timing gen to be stable */ in zynqmp_dpsub_crtc_atomic_enable()
347 * zynqmp_dpsub_drm_handle_vblank - Handle the vblank event
350 * This function handles the vblank interrupt, and sends an event to
351 * CRTC object. This will be called by the DP vblank interrupt handler.
502 /* Initialize mode config, vblank and the KMS poll helper. */ in zynqmp_dpsub_drm_init()

123456789