• Home
  • Raw
  • Download

Lines Matching refs:pipe

46 #define vblanktimestamp(dev, pipe, count) \  argument
47 ((dev)->vblank[pipe].time[(count) % DRM_VBLANKTIME_RBSIZE])
60 drm_get_last_vbltimestamp(struct drm_device *dev, unsigned int pipe,
77 static void store_vblank(struct drm_device *dev, unsigned int pipe, in store_vblank() argument
81 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in store_vblank()
92 vblanktimestamp(dev, pipe, tslot) = *t_vblank; in store_vblank()
120 static void drm_reset_vblank_timestamp(struct drm_device *dev, unsigned int pipe) in drm_reset_vblank_timestamp() argument
134 cur_vblank = dev->driver->get_vblank_counter(dev, pipe); in drm_reset_vblank_timestamp()
135 rc = drm_get_last_vbltimestamp(dev, pipe, &t_vblank, 0); in drm_reset_vblank_timestamp()
136 } while (cur_vblank != dev->driver->get_vblank_counter(dev, pipe) && --count > 0); in drm_reset_vblank_timestamp()
150 store_vblank(dev, pipe, 1, &t_vblank, cur_vblank); in drm_reset_vblank_timestamp()
171 static void drm_update_vblank_count(struct drm_device *dev, unsigned int pipe, in drm_update_vblank_count() argument
174 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_update_vblank_count()
194 cur_vblank = dev->driver->get_vblank_counter(dev, pipe); in drm_update_vblank_count()
195 rc = drm_get_last_vbltimestamp(dev, pipe, &t_vblank, flags); in drm_update_vblank_count()
196 } while (cur_vblank != dev->driver->get_vblank_counter(dev, pipe) && --count > 0); in drm_update_vblank_count()
205 t_old = &vblanktimestamp(dev, pipe, vblank->count); in drm_update_vblank_count()
218 pipe, (long long) diff_ns, framedur_ns); in drm_update_vblank_count()
235 " due to pre-modeset.\n", pipe, diff); in drm_update_vblank_count()
276 "refcount %u, vblirq %u\n", pipe, diff, in drm_update_vblank_count()
284 pipe, vblank->count, diff, cur_vblank, vblank->last); in drm_update_vblank_count()
300 store_vblank(dev, pipe, diff, &t_vblank, cur_vblank); in drm_update_vblank_count()
309 static void vblank_disable_and_save(struct drm_device *dev, unsigned int pipe) in vblank_disable_and_save() argument
311 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in vblank_disable_and_save()
326 dev->driver->disable_vblank(dev, pipe); in vblank_disable_and_save()
336 drm_update_vblank_count(dev, pipe, 0); in vblank_disable_and_save()
345 unsigned int pipe = vblank->pipe; in vblank_disable_fn() local
353 DRM_DEBUG("disabling vblank on crtc %u\n", pipe); in vblank_disable_fn()
354 vblank_disable_and_save(dev, pipe); in vblank_disable_fn()
367 unsigned int pipe; in drm_vblank_cleanup() local
373 for (pipe = 0; pipe < dev->num_crtcs; pipe++) { in drm_vblank_cleanup()
374 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_cleanup()
416 vblank->pipe = i; in drm_vblank_init()
678 unsigned int pipe = drm_crtc_index(crtc); in drm_calc_timestamping_constants() local
679 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_calc_timestamping_constants()
686 if (WARN_ON(pipe >= dev->num_crtcs)) in drm_calc_timestamping_constants()
767 unsigned int pipe, in drm_calc_vbltimestamp_from_scanoutpos() argument
780 if (pipe >= dev->num_crtcs) { in drm_calc_vbltimestamp_from_scanoutpos()
781 DRM_ERROR("Invalid crtc %u\n", pipe); in drm_calc_vbltimestamp_from_scanoutpos()
795 DRM_DEBUG("crtc %u: Noop due to uninitialized mode.\n", pipe); in drm_calc_vbltimestamp_from_scanoutpos()
811 vbl_status = dev->driver->get_scanout_position(dev, pipe, flags, in drm_calc_vbltimestamp_from_scanoutpos()
819 pipe, vbl_status); in drm_calc_vbltimestamp_from_scanoutpos()
834 pipe, duration_ns/1000, *max_error/1000, i); in drm_calc_vbltimestamp_from_scanoutpos()
870 pipe, vbl_status, hpos, vpos, in drm_calc_vbltimestamp_from_scanoutpos()
908 drm_get_last_vbltimestamp(struct drm_device *dev, unsigned int pipe, in drm_get_last_vbltimestamp() argument
918 ret = dev->driver->get_vblank_timestamp(dev, pipe, &max_error, in drm_get_last_vbltimestamp()
946 u32 drm_vblank_count(struct drm_device *dev, unsigned int pipe) in drm_vblank_count() argument
948 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_count()
950 if (WARN_ON(pipe >= dev->num_crtcs)) in drm_vblank_count()
990 u32 drm_vblank_count_and_time(struct drm_device *dev, unsigned int pipe, in drm_vblank_count_and_time() argument
993 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_count_and_time()
997 if (WARN_ON(pipe >= dev->num_crtcs)) in drm_vblank_count_and_time()
1008 *vblanktime = vblanktimestamp(dev, pipe, cur_vblank); in drm_vblank_count_and_time()
1050 trace_drm_vblank_event_delivered(e->base.pid, e->pipe, in send_vblank_event()
1071 void drm_arm_vblank_event(struct drm_device *dev, unsigned int pipe, in drm_arm_vblank_event() argument
1076 e->pipe = pipe; in drm_arm_vblank_event()
1077 e->event.sequence = drm_vblank_count(dev, pipe); in drm_arm_vblank_event()
1116 void drm_send_vblank_event(struct drm_device *dev, unsigned int pipe, in drm_send_vblank_event() argument
1123 seq = drm_vblank_count_and_time(dev, pipe, &now); in drm_send_vblank_event()
1129 e->pipe = pipe; in drm_send_vblank_event()
1159 static int drm_vblank_enable(struct drm_device *dev, unsigned int pipe) in drm_vblank_enable() argument
1161 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_enable()
1176 ret = dev->driver->enable_vblank(dev, pipe); in drm_vblank_enable()
1177 DRM_DEBUG("enabling vblank on crtc %u, ret: %d\n", pipe, ret); in drm_vblank_enable()
1182 drm_update_vblank_count(dev, pipe, 0); in drm_vblank_enable()
1204 int drm_vblank_get(struct drm_device *dev, unsigned int pipe) in drm_vblank_get() argument
1206 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_get()
1213 if (WARN_ON(pipe >= dev->num_crtcs)) in drm_vblank_get()
1219 ret = drm_vblank_enable(dev, pipe); in drm_vblank_get()
1260 void drm_vblank_put(struct drm_device *dev, unsigned int pipe) in drm_vblank_put() argument
1262 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_put()
1264 if (WARN_ON(pipe >= dev->num_crtcs)) in drm_vblank_put()
1307 void drm_wait_one_vblank(struct drm_device *dev, unsigned int pipe) in drm_wait_one_vblank() argument
1309 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_wait_one_vblank()
1313 if (WARN_ON(pipe >= dev->num_crtcs)) in drm_wait_one_vblank()
1316 ret = drm_vblank_get(dev, pipe); in drm_wait_one_vblank()
1317 if (WARN(ret, "vblank not available on crtc %i, ret=%i\n", pipe, ret)) in drm_wait_one_vblank()
1320 last = drm_vblank_count(dev, pipe); in drm_wait_one_vblank()
1323 last != drm_vblank_count(dev, pipe), in drm_wait_one_vblank()
1326 WARN(ret == 0, "vblank wait timed out on crtc %i\n", pipe); in drm_wait_one_vblank()
1328 drm_vblank_put(dev, pipe); in drm_wait_one_vblank()
1360 void drm_vblank_off(struct drm_device *dev, unsigned int pipe) in drm_vblank_off() argument
1362 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_off()
1368 if (WARN_ON(pipe >= dev->num_crtcs)) in drm_vblank_off()
1375 pipe, vblank->enabled, vblank->inmodeset); in drm_vblank_off()
1379 vblank_disable_and_save(dev, pipe); in drm_vblank_off()
1394 seq = drm_vblank_count_and_time(dev, pipe, &now); in drm_vblank_off()
1397 if (e->pipe != pipe) in drm_vblank_off()
1403 drm_vblank_put(dev, pipe); in drm_vblank_off()
1443 unsigned int pipe = drm_crtc_index(crtc); in drm_crtc_vblank_reset() local
1444 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_crtc_vblank_reset()
1473 void drm_vblank_on(struct drm_device *dev, unsigned int pipe) in drm_vblank_on() argument
1475 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_on()
1478 if (WARN_ON(pipe >= dev->num_crtcs)) in drm_vblank_on()
1483 pipe, vblank->enabled, vblank->inmodeset); in drm_vblank_on()
1491 drm_reset_vblank_timestamp(dev, pipe); in drm_vblank_on()
1498 WARN_ON(drm_vblank_enable(dev, pipe)); in drm_vblank_on()
1543 void drm_vblank_pre_modeset(struct drm_device *dev, unsigned int pipe) in drm_vblank_pre_modeset() argument
1545 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_pre_modeset()
1551 if (WARN_ON(pipe >= dev->num_crtcs)) in drm_vblank_pre_modeset()
1563 if (drm_vblank_get(dev, pipe) == 0) in drm_vblank_pre_modeset()
1577 void drm_vblank_post_modeset(struct drm_device *dev, unsigned int pipe) in drm_vblank_post_modeset() argument
1579 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_vblank_post_modeset()
1586 if (WARN_ON(pipe >= dev->num_crtcs)) in drm_vblank_post_modeset()
1592 drm_reset_vblank_timestamp(dev, pipe); in drm_vblank_post_modeset()
1596 drm_vblank_put(dev, pipe); in drm_vblank_post_modeset()
1618 unsigned int pipe; in drm_modeset_ctl() local
1628 pipe = modeset->crtc; in drm_modeset_ctl()
1629 if (pipe >= dev->num_crtcs) in drm_modeset_ctl()
1634 drm_vblank_pre_modeset(dev, pipe); in drm_modeset_ctl()
1637 drm_vblank_post_modeset(dev, pipe); in drm_modeset_ctl()
1646 static int drm_queue_vblank_event(struct drm_device *dev, unsigned int pipe, in drm_queue_vblank_event() argument
1650 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_queue_vblank_event()
1663 e->pipe = pipe; in drm_queue_vblank_event()
1692 seq = drm_vblank_count_and_time(dev, pipe, &now); in drm_queue_vblank_event()
1701 vblwait->request.sequence, seq, pipe); in drm_queue_vblank_event()
1703 trace_drm_vblank_event_queued(current->pid, pipe, in drm_queue_vblank_event()
1708 drm_vblank_put(dev, pipe); in drm_queue_vblank_event()
1725 drm_vblank_put(dev, pipe); in drm_queue_vblank_event()
1749 unsigned int flags, seq, pipe, high_pipe; in drm_wait_vblank() local
1770 pipe = high_pipe >> _DRM_VBLANK_HIGH_CRTC_SHIFT; in drm_wait_vblank()
1772 pipe = flags & _DRM_VBLANK_SECONDARY ? 1 : 0; in drm_wait_vblank()
1773 if (pipe >= dev->num_crtcs) in drm_wait_vblank()
1776 vblank = &dev->vblank[pipe]; in drm_wait_vblank()
1778 ret = drm_vblank_get(dev, pipe); in drm_wait_vblank()
1783 seq = drm_vblank_count(dev, pipe); in drm_wait_vblank()
1800 return drm_queue_vblank_event(dev, pipe, vblwait, file_priv); in drm_wait_vblank()
1809 vblwait->request.sequence, pipe); in drm_wait_vblank()
1812 (((drm_vblank_count(dev, pipe) - in drm_wait_vblank()
1820 vblwait->reply.sequence = drm_vblank_count_and_time(dev, pipe, &now); in drm_wait_vblank()
1831 drm_vblank_put(dev, pipe); in drm_wait_vblank()
1835 static void drm_handle_vblank_events(struct drm_device *dev, unsigned int pipe) in drm_handle_vblank_events() argument
1843 seq = drm_vblank_count_and_time(dev, pipe, &now); in drm_handle_vblank_events()
1846 if (e->pipe != pipe) in drm_handle_vblank_events()
1855 drm_vblank_put(dev, pipe); in drm_handle_vblank_events()
1859 trace_drm_vblank_event(pipe, seq); in drm_handle_vblank_events()
1872 bool drm_handle_vblank(struct drm_device *dev, unsigned int pipe) in drm_handle_vblank() argument
1874 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_handle_vblank()
1880 if (WARN_ON(pipe >= dev->num_crtcs)) in drm_handle_vblank()
1898 drm_update_vblank_count(dev, pipe, DRM_CALLED_FROM_VBLIRQ); in drm_handle_vblank()
1903 drm_handle_vblank_events(dev, pipe); in drm_handle_vblank()
1950 u32 drm_vblank_no_hw_counter(struct drm_device *dev, unsigned int pipe) in drm_vblank_no_hw_counter() argument