Home
last modified time | relevance | path

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

12345678

/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
195 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); store_vblank() local
209 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_max_vblank_count() local
298 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_update_vblank_count() local
389 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_vblank_count() local
424 u64 vblank; drm_crtc_accurate_vblank_count() local
463 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_vblank_disable_and_save() local
499 struct drm_vblank_crtc *vblank = timer_container_of(vblank, t, vblank_disable_fn() local
515 struct drm_vblank_crtc *vblank = ptr; drm_vblank_init_release() local
554 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, i); drm_vblank_init() local
608 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); drm_crtc_vblank_waitqueue() local
631 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); drm_calc_timestamping_constants() local
734 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); drm_crtc_vblank_helper_get_vblank_timestamp_internal() local
959 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_vblank_count_and_time() local
1014 struct drm_vblank_crtc *vblank; drm_crtc_next_vblank_start() local
1175 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_vblank_enable() local
1213 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_vblank_get() local
1256 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_vblank_put() local
1305 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); drm_crtc_wait_one_vblank() local
1343 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); drm_crtc_vblank_off() local
1421 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); drm_crtc_vblank_reset() local
1460 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); drm_crtc_set_max_vblank_count() local
1487 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); drm_crtc_vblank_on_config() local
1542 struct drm_vblank_crtc *vblank; drm_vblank_restore() local
1597 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_crtc_vblank_restore() local
1612 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_queue_vblank_event() local
1738 struct drm_vblank_crtc *vblank; drm_wait_vblank_ioctl() local
1920 struct drm_vblank_crtc *vblank = drm_vblank_crtc(dev, pipe); drm_handle_vblank() local
2010 struct drm_vblank_crtc *vblank; drm_crtc_get_sequence_ioctl() local
2067 struct drm_vblank_crtc *vblank; drm_crtc_queue_sequence_ioctl() local
2215 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); drm_crtc_vblank_start_timer() local
2257 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); drm_crtc_vblank_cancel_timer() local
2287 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); drm_crtc_vblank_get_vblank_timeout() 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/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/dc/dml2_0/dml21/src/dml2_pmo/
H A Ddml2_pmo_dcn42.c12 * This implementation provides VBlank-only strategies for 1, 2, 3, and 4 display
19 // VBlank only
29 // VBlank only for both displays
39 // VBlank only for all three displays
49 // VBlank only for all four displays
306 * since our strategies only use VBlank.
376 * Since our strategies only contain VBlank methods, the expansion
/linux/drivers/gpu/drm/amd/display/amdgpu_dm/
H A Damdgpu_dm_crtc.c249 "Reject vblank enable on unconfigured CRTC %d (enabled=%d)\n", in amdgpu_dm_crtc_vblank_control_worker()
258 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); in amdgpu_dm_crtc_vblank_control_worker()
265 * IPS & self-refresh feature can cause vblank counter resets between in amdgpu_dm_crtc_vblank_control_worker()
266 * vblank disable and enable. in amdgpu_dm_crtc_vblank_control_worker()
267 * It may cause system stuck due to waiting for the vblank counter. in amdgpu_dm_crtc_vblank_control_worker()
269 * update the vblank counter in DRM. in amdgpu_dm_crtc_vblank_control_worker()
273 sr_supported && vblank->config.disable_immediate) in amdgpu_dm_crtc_set_vblank()
279 /* vblank irq on -> Only need vupdate irq in vrr mode */ in amdgpu_dm_crtc_set_vblank()
283 /* vblank irq off -> vupdate irq off */ in amdgpu_dm_crtc_set_vblank()
291 /* crtc vblank o in amdgpu_dm_crtc_set_vblank()
292 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc); amdgpu_dm_crtc_set_vblank() local
[all...]
H A Damdgpu_dm_ism.c293 * If there is an active vblank requestor, or if SSO is being engaged, in dm_ism_commit_idle_optimization_state()
300 * Control PSR based on vblank requirements from OS in dm_ism_commit_idle_optimization_state()
304 * self-refresh during vblank periods. in dm_ism_commit_idle_optimization_state()
308 * If the OS requires vblank events (or vblank is otherwise enabled), in dm_ism_commit_idle_optimization_state()
312 * hysteresis-based decision can be reused once vblank is disabled. in dm_ism_commit_idle_optimization_state()
321 * Check for any active drm vblank requestors on other CRTCs in dm_ism_commit_idle_optimization_state()
/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/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);
H A Dlsdc_crtc.c18 * After the CRTC soft reset, the vblank counter would be reset to zero.
45 /* Wait about a vblank time */ in lsdc_crtc0_soft_reset()
71 /* Wait about a vblank time */ in lsdc_crtc1_soft_reset()
308 * The 32-bit hardware vblank counter has been available since LS7A2000
445 /* 32-bit hardware vblank counter */ in lsdc_crtc_get_vblank_counter()
567 seq_printf(m, "%s vblank counter: %08u\n\n", lcrtc->base.name, in lsdc_crtc_show_vblank_counter()
849 drm_dbg(ddev, "Send vblank manually\n"); in lsdc_crtc_send_vblank()
879 * Make sure we issue a vblank event after disabling the CRTC if in lsdc_crtc_atomic_disable()
/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.
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 interrupt
815 * @crtc: crtc to enable vblank interrupt for
841 * radeon_disable_vblank_kms - disable vblank interrupt
[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/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/vc4/
H A Dvc4_crtc.c189 * Less: This happens when we are in vblank and the HVS, after getting in vc4_crtc_get_scanout_position()
192 * The PV does not scan out in vblank, so does not remove lines from in vc4_crtc_get_scanout_position()
202 * line of vblank, so PV has about a full vblank in vc4_crtc_get_scanout_position()
204 * one taken at entry into vblank irq handler, so it in vc4_crtc_get_scanout_position()
218 * we are at the very beginning of vblank, as the hvs just in vc4_crtc_get_scanout_position()
220 * truly correspond to start of vblank. in vc4_crtc_get_scanout_position()
227 * No clue where we are inside vblank. Return a vpos of zero, in vc4_crtc_get_scanout_position()
638 /* Disable vblank irq handling before crtc is disabled. */ in vc4_crtc_atomic_disable()
644 * Make sure we issue a vblank even in vc4_crtc_atomic_disable()
[all...]
/linux/drivers/gpu/drm/msm/disp/mdp5/
H A Dmdp5_crtc.c48 struct mdp_irq vblank; member
82 mdp_irq_register(&get_kms(crtc)->base, &mdp5_crtc->vblank); in request_pending()
108 * vblank we know hw is done w/ previous scanout_fb).
501 /* Disable/save vblank irq handling before power is disabled */ in mdp5_crtc_atomic_disable()
568 /* Restore vblank irq handling after power is enabled */ in mdp5_crtc_atomic_enable()
835 mdp5_crtc->vblank.irqmask = mdp5_cstate->vblank_irqmask; in mdp5_crtc_atomic_flush()
1030 /* enable vblank to complete cursor work: */ in mdp5_crtc_cursor_set()
1184 struct mdp5_crtc *mdp5_crtc = container_of(irq, struct mdp5_crtc, vblank); in mdp5_crtc_vblank_irq()
1189 mdp_irq_unregister(&get_kms(crtc)->base, &mdp5_crtc->vblank); in mdp5_crtc_vblank_irq()
1252 dev_warn(dev->dev, "vblank tim in mdp5_crtc_wait_for_flush_done()
[all...]
/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()
/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.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/i915/display/
H A Dintel_psr.c152 * When unmasked PSR is blocked as long as vblank and/or vsync
158 * Selectcs whether PSR exit generates an extra vblank before
160 * if the bit on hsw/bdw vs. skl+ (masked==generate the extra vblank,
161 * unmasked==do not generate the extra vblank).
163 * With DC states enabled the extra vblank happens after link training,
169 * and thus won't latch until the first vblank. So with DC states
172 * latched by the vblank that it was trying to prevent from being
952 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(&crtc->base);
957 READ_ONCE(vblank->enabled); in hsw_activate_psr1()
1532 int vblank, in wake_lines_fit_into_vblank()
945 struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(&crtc->base); is_dc5_dc6_blocked() local
1499 _wake_lines_fit_into_vblank(const struct intel_crtc_state * crtc_state,int vblank,int wake_lines) _wake_lines_fit_into_vblank() argument
1519 int vblank = crtc_state->hw.adjusted_mode.crtc_vblank_end - wake_lines_fit_into_vblank() local
4580 int vblank = intel_crtc_vblank_length(crtc_state); intel_psr_compute_config_late() local
[all...]

12345678