Home
last modified time | relevance | path

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

1234567

/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 interrupts are
133 * On many hardware disabling the vblank interrupt cannot be done in a race-free
[all …]
/linux/include/drm/
H A Ddrm_vblank.h40 * struct drm_pending_vblank_event - pending vblank event tracking
67 * Event payload for vblank events, requested through
82 * struct drm_vblank_crtc_config - vblank configuration for a CRTC
86 * @offdelay_ms: Vblank off delay in ms, used to determine how long
95 * for the exact semantics of immediate vblank disabling.
107 * struct drm_vblank_crtc - vblank tracking for a CRTC
109 * This structure tracks the vblank state for one CRTC.
111 * Note that for historical reasons - the vblank handling code is still shared
122 * @queue: Wait queue for vblank waiters.
126 * @disable_timer: Disable timer for the delayed vblank disabling
[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,
H A Ddrm_simple_kms_helper.h102 * drm_crtc_arm_vblank_event(), when the driver supports vblank
104 * complex case. In case the hardware lacks vblank support entirely,
107 * atomic helper fake a vblank event.
/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/omapdrm/
H A Domap_irq.c102 * omap_irq_enable_vblank - enable vblank interrupt events
105 * Enable vblank interrupts for @crtc. If the device doesn't have
106 * a hardware vblank counter, this routine should be a no-op, since
110 * Zero on success, appropriate errno if the given @crtc's vblank
132 * omap_irq_disable_vblank - disable vblank interrupt events
135 * Disable vblank interrupts for @crtc. If the device doesn't have
136 * 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.c17 * After the CRTC soft reset, the vblank counter would be reset to zero.
44 /* Wait about a vblank time */ in lsdc_crtc0_soft_reset()
70 /* Wait about a vblank time */ in lsdc_crtc1_soft_reset()
307 * The 32-bit hardware vblank counter has been available since LS7A2000
444 /* 32-bit hardware vblank counter */ in lsdc_crtc_get_vblank_counter()
566 seq_printf(m, "%s vblank counter: %08u\n\n", lcrtc->base.name, in lsdc_crtc_show_vblank_counter()
848 drm_dbg(ddev, "Send vblank manually\n"); in lsdc_crtc_send_vblank()
878 * 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.c745 * VBlank related functions.
769 * of vblank, as is required by DRM core vblank counter handling. in radeon_get_vblank_counter_kms()
771 * incremented at start of vblank. We measure distance to start of in radeon_get_vblank_counter_kms()
772 * vblank in vpos. vpos therefore will be >= 0 between start of vblank in radeon_get_vblank_counter_kms()
783 * distance to start of vblank, instead of regular in radeon_get_vblank_counter_kms()
797 DRM_DEBUG_VBL("crtc %u: dist from vblank start %d\n", in radeon_get_vblank_counter_kms()
800 /* Bump counter if we are at >= leading edge of vblank, in radeon_get_vblank_counter_kms()
818 * radeon_enable_vblank_kms - enable vblank interrupt
820 * @crtc: crtc to enable vblank interrupt for
846 * 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/gpu/drm/mcde/
H A Dmcde_display.c77 bool vblank = false; in mcde_display_irq() local
114 /* Vblank from one of the channels */ in mcde_display_irq()
116 dev_dbg(mcde->dev, "chnl A vblank IRQ\n"); in mcde_display_irq()
117 vblank = true; in mcde_display_irq()
120 dev_dbg(mcde->dev, "chnl B vblank IRQ\n"); in mcde_display_irq()
121 vblank = true; in mcde_display_irq()
124 dev_dbg(mcde->dev, "chnl C0 vblank IRQ\n"); in mcde_display_irq()
126 dev_dbg(mcde->dev, "chnl C1 vblank IRQ\n"); in mcde_display_irq()
133 if (vblank) in mcde_display_irq()
1395 * Handle any pending event first, we need to arm the vblank in mcde_display_update()
[all …]
/linux/drivers/gpu/drm/amd/amdgpu/
H A Damdgpu_display.c1523 * USE_REAL_VBLANKSTART to use the real start of vblank instead
1524 * of a fudged earlier start of vblank.
1527 * fudged earlier start of vblank in *vpos and the distance
1528 * to true start of vblank in *hpos.
1538 * Returns vpos as a negative number inside vblank, counting the number
1539 * of scanlines to go until end of vblank, e.g., -1 means "one scanline
1540 * until start of active scanout / end of vblank."
1545 * DRM_SCANOUTPOS_INVBL = Inside vblank.
1581 /* Valid vblank area boundaries from gpu retrieved? */ in amdgpu_display_get_crtc_scanoutpos()
1593 /* Called from driver internal vblank counter query code? */ in amdgpu_display_get_crtc_scanoutpos()
[all …]
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/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.c262 if (dev->vblank[0].enabled) in gma_irq_preinstall()
264 if (dev->vblank[1].enabled) in gma_irq_preinstall()
295 if (dev->vblank[i].enabled) in gma_irq_postinstall()
353 if (dev->vblank[i].enabled) in gma_irq_uninstall()
467 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.c40 * Vblank IRQ in tve200_irq()
43 * the vblank IRQ, firing many more interrupts. We counter this in tve200_irq()
44 * by toggling the IRQ back and forth from firing at vblank and in tve200_irq()
47 * frame, one at start of Vblank (that we make call into the CRTC) and in tve200_irq()
/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.c214 /* Delay of 3 vblank intervals for timing gen to be stable */ in zynqmp_dpsub_crtc_atomic_enable()
346 * zynqmp_dpsub_drm_handle_vblank - Handle the vblank event
349 * This function handles the vblank interrupt, and sends an event to
350 * CRTC object. This will be called by the DP vblank interrupt handler.
499 /* Initialize mode config, vblank and the KMS poll helper. */ in zynqmp_dpsub_drm_init()
/linux/drivers/gpu/drm/logicvc/
H A Dlogicvc_crtc.c48 * We need to grab the pending event here if vblank was already enabled in logicvc_crtc_atomic_begin()
141 /* Register our event after vblank is enabled. */ in logicvc_crtc_atomic_enable()
174 /* Consume any leftover event since vblank is now disabled. */ in logicvc_crtc_atomic_disable()
/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/amd/display/dc/resource/dcn32/
H A Ddcn32_resource_helpers.c607 …* disallow_subvp_in_active_plus_blank() - Function to determine disallowed subvp + drr/vblank conf…
609 * @pipe: subvp pipe to be used for the subvp + drr/vblank config
613 * want to enable any 1080p60 (SubVP) + drr / vblank configs since these
689 * dcn32_subvp_vblank_admissable() - Determine if SubVP + Vblank config is admissible
695 * SubVP + Vblank is admissible under the following conditions:
699 * - DML must have output DRAM clock change support as SubVP + Vblank
700 * - The potential vblank display must not be PSR capable

1234567