| /linux/drivers/gpu/drm/ |
| 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 interrupts are 133 * On many hardware disabling the vblank interrupt cannot be done in a race-free [all …]
|
| /linux/include/drm/ |
| H A D | drm_vblank.h | 40 * 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 D | drm_vblank_work.h | 12 * 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 D | drm_flip_work.h | 34 * 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 D | drm_simple_kms_helper.h | 102 * 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 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.index_nr) { 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.index_nr) { in gf100_sw_chan_mthd() [all …]
|
| /linux/drivers/gpu/drm/omapdrm/ |
| H A D | omap_irq.c | 102 * 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 D | loongson_module.c | 17 MODULE_PARM_DESC(vblank, "Disable/Enable hw vblank support"); 18 module_param_named(vblank, loongson_vblank, int, 0400);
|
| H A D | lsdc_crtc.c | 17 * 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 D | matroxfb_crtc2.c | 403 …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 D | radeon_kms.c | 745 * 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 D | base.c | 41 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 D | nxp,imx8mq-dcss.yaml | 34 - description: DTG interrupt for Vblank 40 - const: vblank 90 interrupt-names = "ctxld", "ctxld_kick", "vblank";
|
| /linux/drivers/gpu/drm/mcde/ |
| H A D | mcde_display.c | 77 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 D | amdgpu_display.c | 1523 * 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 D | amdgpu_encoders.c | 170 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 D | mt9v011.c | 202 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 D | psb_irq.c | 262 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 D | tve200_display.c | 40 * 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 D | fbmon.c | 1026 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 D | zynqmp_kms.c | 214 /* 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 D | logicvc_crtc.c | 48 * 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 D | maple.c | 99 /* 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 D | dcn32_resource_helpers.c | 607 …* 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
|