Lines Matching refs:crtc

205 		struct drm_crtc *crtc = drm_crtc_from_index(dev, pipe);  in __get_vblank_counter()  local
207 if (drm_WARN_ON(dev, !crtc)) in __get_vblank_counter()
210 if (crtc->funcs->get_vblank_counter) in __get_vblank_counter()
211 return crtc->funcs->get_vblank_counter(crtc); in __get_vblank_counter()
403 u64 drm_crtc_accurate_vblank_count(struct drm_crtc *crtc) in drm_crtc_accurate_vblank_count() argument
405 struct drm_device *dev = crtc->dev; in drm_crtc_accurate_vblank_count()
406 unsigned int pipe = drm_crtc_index(crtc); in drm_crtc_accurate_vblank_count()
411 !crtc->funcs->get_vblank_timestamp, in drm_crtc_accurate_vblank_count()
428 struct drm_crtc *crtc = drm_crtc_from_index(dev, pipe); in __disable_vblank() local
430 if (drm_WARN_ON(dev, !crtc)) in __disable_vblank()
433 if (crtc->funcs->disable_vblank) in __disable_vblank()
434 crtc->funcs->disable_vblank(crtc); in __disable_vblank()
590 wait_queue_head_t *drm_crtc_vblank_waitqueue(struct drm_crtc *crtc) in drm_crtc_vblank_waitqueue() argument
592 return &crtc->dev->vblank[drm_crtc_index(crtc)].queue; in drm_crtc_vblank_waitqueue()
608 void drm_calc_timestamping_constants(struct drm_crtc *crtc, in drm_calc_timestamping_constants() argument
611 struct drm_device *dev = crtc->dev; in drm_calc_timestamping_constants()
612 unsigned int pipe = drm_crtc_index(crtc); in drm_calc_timestamping_constants()
642 crtc->base.id); in drm_calc_timestamping_constants()
651 crtc->base.id, mode->crtc_htotal, in drm_calc_timestamping_constants()
654 crtc->base.id, dotclock, framedur_ns, linedur_ns); in drm_calc_timestamping_constants()
692 struct drm_crtc *crtc, int *max_error, ktime_t *vblank_time, in drm_crtc_vblank_helper_get_vblank_timestamp_internal() argument
696 struct drm_device *dev = crtc->dev; in drm_crtc_vblank_helper_get_vblank_timestamp_internal()
697 unsigned int pipe = crtc->index; in drm_crtc_vblank_helper_get_vblank_timestamp_internal()
720 mode = &crtc->hwmode; in drm_crtc_vblank_helper_get_vblank_timestamp_internal()
744 vbl_status = get_scanout_position(crtc, in_vblank_irq, in drm_crtc_vblank_helper_get_vblank_timestamp_internal()
835 bool drm_crtc_vblank_helper_get_vblank_timestamp(struct drm_crtc *crtc, in drm_crtc_vblank_helper_get_vblank_timestamp() argument
841 crtc, max_error, vblank_time, in_vblank_irq, in drm_crtc_vblank_helper_get_vblank_timestamp()
842 crtc->helper_private->get_scanout_position); in drm_crtc_vblank_helper_get_vblank_timestamp()
867 drm_crtc_get_last_vbltimestamp(struct drm_crtc *crtc, ktime_t *tvblank, in drm_crtc_get_last_vbltimestamp() argument
876 if (crtc && crtc->funcs->get_vblank_timestamp && max_error > 0) { in drm_crtc_get_last_vbltimestamp()
877 ret = crtc->funcs->get_vblank_timestamp(crtc, &max_error, in drm_crtc_get_last_vbltimestamp()
894 struct drm_crtc *crtc = drm_crtc_from_index(dev, pipe); in drm_get_last_vbltimestamp() local
896 return drm_crtc_get_last_vbltimestamp(crtc, tvblank, in_vblank_irq); in drm_get_last_vbltimestamp()
920 u64 drm_crtc_vblank_count(struct drm_crtc *crtc) in drm_crtc_vblank_count() argument
922 return drm_vblank_count(crtc->dev, drm_crtc_index(crtc)); in drm_crtc_vblank_count()
980 u64 drm_crtc_vblank_count_and_time(struct drm_crtc *crtc, in drm_crtc_vblank_count_and_time() argument
983 return drm_vblank_count_and_time(crtc->dev, drm_crtc_index(crtc), in drm_crtc_vblank_count_and_time()
996 int drm_crtc_next_vblank_start(struct drm_crtc *crtc, ktime_t *vblanktime) in drm_crtc_next_vblank_start() argument
998 unsigned int pipe = drm_crtc_index(crtc); in drm_crtc_next_vblank_start()
1003 if (!drm_dev_has_vblank(crtc->dev)) in drm_crtc_next_vblank_start()
1006 vblank = &crtc->dev->vblank[pipe]; in drm_crtc_next_vblank_start()
1012 if (!drm_crtc_get_last_vbltimestamp(crtc, vblanktime, false)) in drm_crtc_next_vblank_start()
1098 void drm_crtc_arm_vblank_event(struct drm_crtc *crtc, in drm_crtc_arm_vblank_event() argument
1101 struct drm_device *dev = crtc->dev; in drm_crtc_arm_vblank_event()
1102 unsigned int pipe = drm_crtc_index(crtc); in drm_crtc_arm_vblank_event()
1107 e->sequence = drm_crtc_accurate_vblank_count(crtc) + 1; in drm_crtc_arm_vblank_event()
1123 void drm_crtc_send_vblank_event(struct drm_crtc *crtc, in drm_crtc_send_vblank_event() argument
1126 struct drm_device *dev = crtc->dev; in drm_crtc_send_vblank_event()
1128 unsigned int pipe = drm_crtc_index(crtc); in drm_crtc_send_vblank_event()
1146 struct drm_crtc *crtc = drm_crtc_from_index(dev, pipe); in __enable_vblank() local
1148 if (drm_WARN_ON(dev, !crtc)) in __enable_vblank()
1151 if (crtc->funcs->enable_vblank) in __enable_vblank()
1152 return crtc->funcs->enable_vblank(crtc); in __enable_vblank()
1238 int drm_crtc_vblank_get(struct drm_crtc *crtc) in drm_crtc_vblank_get() argument
1240 return drm_vblank_get(crtc->dev, drm_crtc_index(crtc)); in drm_crtc_vblank_get()
1273 void drm_crtc_vblank_put(struct drm_crtc *crtc) in drm_crtc_vblank_put() argument
1275 drm_vblank_put(crtc->dev, drm_crtc_index(crtc)); in drm_crtc_vblank_put()
1324 void drm_crtc_wait_one_vblank(struct drm_crtc *crtc) in drm_crtc_wait_one_vblank() argument
1326 drm_wait_one_vblank(crtc->dev, drm_crtc_index(crtc)); in drm_crtc_wait_one_vblank()
1341 void drm_crtc_vblank_off(struct drm_crtc *crtc) in drm_crtc_vblank_off() argument
1343 struct drm_device *dev = crtc->dev; in drm_crtc_vblank_off()
1344 unsigned int pipe = drm_crtc_index(crtc); in drm_crtc_vblank_off()
1420 void drm_crtc_vblank_reset(struct drm_crtc *crtc) in drm_crtc_vblank_reset() argument
1422 struct drm_device *dev = crtc->dev; in drm_crtc_vblank_reset()
1423 unsigned int pipe = drm_crtc_index(crtc); in drm_crtc_vblank_reset()
1459 void drm_crtc_set_max_vblank_count(struct drm_crtc *crtc, in drm_crtc_set_max_vblank_count() argument
1462 struct drm_device *dev = crtc->dev; in drm_crtc_set_max_vblank_count()
1463 unsigned int pipe = drm_crtc_index(crtc); in drm_crtc_set_max_vblank_count()
1483 void drm_crtc_vblank_on(struct drm_crtc *crtc) in drm_crtc_vblank_on() argument
1485 struct drm_device *dev = crtc->dev; in drm_crtc_vblank_on()
1486 unsigned int pipe = drm_crtc_index(crtc); in drm_crtc_vblank_on()
1568 void drm_crtc_vblank_restore(struct drm_crtc *crtc) in drm_crtc_vblank_restore() argument
1570 WARN_ON_ONCE(!crtc->funcs->get_vblank_timestamp); in drm_crtc_vblank_restore()
1571 WARN_ON_ONCE(!crtc->dev->vblank_disable_immediate); in drm_crtc_vblank_restore()
1573 drm_vblank_restore(crtc->dev, drm_crtc_index(crtc)); in drm_crtc_vblank_restore()
1641 pipe = modeset->crtc; in drm_legacy_modeset_ctl_ioctl()
1682 struct drm_crtc *crtc = drm_crtc_from_index(dev, pipe); in drm_queue_vblank_event() local
1684 if (crtc) in drm_queue_vblank_event()
1685 e->event.vbl.crtc_id = crtc->base.id; in drm_queue_vblank_event()
1793 struct drm_crtc *crtc; in drm_wait_vblank_ioctl() local
1828 drm_for_each_crtc(crtc, dev) { in drm_wait_vblank_ioctl()
1829 if (drm_lease_held(file_priv, crtc->base.id)) { in drm_wait_vblank_ioctl()
1934 struct drm_crtc *crtc = drm_crtc_from_index(dev, pipe); in drm_handle_vblank_events() local
1958 if (crtc && crtc->funcs->get_vblank_timestamp) in drm_handle_vblank_events()
2048 bool drm_crtc_handle_vblank(struct drm_crtc *crtc) in drm_crtc_handle_vblank() argument
2050 return drm_handle_vblank(crtc->dev, drm_crtc_index(crtc)); in drm_crtc_handle_vblank()
2065 struct drm_crtc *crtc; in drm_crtc_get_sequence_ioctl() local
2079 crtc = drm_crtc_find(dev, file_priv, get_seq->crtc_id); in drm_crtc_get_sequence_ioctl()
2080 if (!crtc) in drm_crtc_get_sequence_ioctl()
2083 pipe = drm_crtc_index(crtc); in drm_crtc_get_sequence_ioctl()
2089 ret = drm_crtc_vblank_get(crtc); in drm_crtc_get_sequence_ioctl()
2097 drm_modeset_lock(&crtc->mutex, NULL); in drm_crtc_get_sequence_ioctl()
2098 if (crtc->state) in drm_crtc_get_sequence_ioctl()
2099 get_seq->active = crtc->state->enable; in drm_crtc_get_sequence_ioctl()
2101 get_seq->active = crtc->enabled; in drm_crtc_get_sequence_ioctl()
2102 drm_modeset_unlock(&crtc->mutex); in drm_crtc_get_sequence_ioctl()
2106 drm_crtc_vblank_put(crtc); in drm_crtc_get_sequence_ioctl()
2121 struct drm_crtc *crtc; in drm_crtc_queue_sequence_ioctl() local
2138 crtc = drm_crtc_find(dev, file_priv, queue_seq->crtc_id); in drm_crtc_queue_sequence_ioctl()
2139 if (!crtc) in drm_crtc_queue_sequence_ioctl()
2148 pipe = drm_crtc_index(crtc); in drm_crtc_queue_sequence_ioctl()
2156 ret = drm_crtc_vblank_get(crtc); in drm_crtc_queue_sequence_ioctl()
2200 drm_crtc_vblank_put(crtc); in drm_crtc_queue_sequence_ioctl()
2214 drm_crtc_vblank_put(crtc); in drm_crtc_queue_sequence_ioctl()