| /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/include/drm/ |
| H A D | drm_device.h | 267 * 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 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,
|
| /linux/drivers/gpu/drm/amd/display/amdgpu_dm/tests/ |
| H A D | amdgpu_dm_crtc_test.c | 828 * 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 D | vmwgfx_vkms.c | 123 * 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 D | drm_internal.h | 120 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 D | drm_flip_work.c | 86 * 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 D | loongson_module.c | 17 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 D | omap_irq.c | 103 * 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 D | dpu_encoder_phys.h | 33 * 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 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/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/vkms/ |
| H A D | vkms_drv.h | 179 * 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 D | psb_irq.c | 263 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 D | oaktrail_device.c | 149 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 D | gma_display.c | 282 /* 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 D | fbmon.c | 1028 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 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/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/sprd/ |
| H A D | sprd_drm.c | 91 /* 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 D | t4ka3.c | 83 /* 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 D | ov2680.c | 131 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()
|