Lines Matching refs:dev

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()
84 assert_spin_locked(&dev->vblank_time_lock); 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
127 spin_lock(&dev->vblank_time_lock); in drm_reset_vblank_timestamp()
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()
152 spin_unlock(&dev->vblank_time_lock); 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()
198 if (dev->max_vblank_count != 0) { in drm_update_vblank_count()
200 diff = (cur_vblank - vblank->last) & dev->max_vblank_count; in drm_update_vblank_count()
205 t_old = &vblanktimestamp(dev, pipe, vblank->count); 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()
318 spin_lock_irqsave(&dev->vblank_time_lock, irqflags); 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()
338 spin_unlock_irqrestore(&dev->vblank_time_lock, irqflags); in vblank_disable_and_save()
344 struct drm_device *dev = vblank->dev; in vblank_disable_fn() local
348 if (!dev->vblank_disable_allowed) in vblank_disable_fn()
351 spin_lock_irqsave(&dev->vbl_lock, irqflags); in vblank_disable_fn()
354 vblank_disable_and_save(dev, pipe); in vblank_disable_fn()
356 spin_unlock_irqrestore(&dev->vbl_lock, irqflags); in vblank_disable_fn()
365 void drm_vblank_cleanup(struct drm_device *dev) in drm_vblank_cleanup() argument
370 if (dev->num_crtcs == 0) in drm_vblank_cleanup()
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()
377 drm_core_check_feature(dev, DRIVER_MODESET)); in drm_vblank_cleanup()
382 kfree(dev->vblank); in drm_vblank_cleanup()
384 dev->num_crtcs = 0; in drm_vblank_cleanup()
398 int drm_vblank_init(struct drm_device *dev, unsigned int num_crtcs) in drm_vblank_init() argument
403 spin_lock_init(&dev->vbl_lock); in drm_vblank_init()
404 spin_lock_init(&dev->vblank_time_lock); in drm_vblank_init()
406 dev->num_crtcs = num_crtcs; in drm_vblank_init()
408 dev->vblank = kcalloc(num_crtcs, sizeof(*dev->vblank), GFP_KERNEL); in drm_vblank_init()
409 if (!dev->vblank) in drm_vblank_init()
413 struct drm_vblank_crtc *vblank = &dev->vblank[i]; in drm_vblank_init()
415 vblank->dev = dev; in drm_vblank_init()
425 if (dev->driver->get_vblank_timestamp) in drm_vblank_init()
431 if (dev->vblank_disable_immediate && !dev->driver->get_vblank_timestamp) { in drm_vblank_init()
432 dev->vblank_disable_immediate = false; in drm_vblank_init()
437 dev->vblank_disable_allowed = false; in drm_vblank_init()
442 dev->num_crtcs = 0; in drm_vblank_init()
449 struct drm_device *dev = cookie; in drm_irq_vgaarb_nokms() local
451 if (dev->driver->vgaarb_irq) { in drm_irq_vgaarb_nokms()
452 dev->driver->vgaarb_irq(dev, state); in drm_irq_vgaarb_nokms()
456 if (!dev->irq_enabled) in drm_irq_vgaarb_nokms()
460 if (dev->driver->irq_uninstall) in drm_irq_vgaarb_nokms()
461 dev->driver->irq_uninstall(dev); in drm_irq_vgaarb_nokms()
463 if (dev->driver->irq_preinstall) in drm_irq_vgaarb_nokms()
464 dev->driver->irq_preinstall(dev); in drm_irq_vgaarb_nokms()
465 if (dev->driver->irq_postinstall) in drm_irq_vgaarb_nokms()
466 dev->driver->irq_postinstall(dev); in drm_irq_vgaarb_nokms()
487 int drm_irq_install(struct drm_device *dev, int irq) in drm_irq_install() argument
492 if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ)) in drm_irq_install()
499 if (!dev->dev_private) in drm_irq_install()
502 if (dev->irq_enabled) in drm_irq_install()
504 dev->irq_enabled = true; in drm_irq_install()
509 if (dev->driver->irq_preinstall) in drm_irq_install()
510 dev->driver->irq_preinstall(dev); in drm_irq_install()
513 if (drm_core_check_feature(dev, DRIVER_IRQ_SHARED)) in drm_irq_install()
516 ret = request_irq(irq, dev->driver->irq_handler, in drm_irq_install()
517 sh_flags, dev->driver->name, dev); in drm_irq_install()
520 dev->irq_enabled = false; in drm_irq_install()
524 if (!drm_core_check_feature(dev, DRIVER_MODESET)) in drm_irq_install()
525 vga_client_register(dev->pdev, (void *)dev, drm_irq_vgaarb_nokms, NULL); in drm_irq_install()
528 if (dev->driver->irq_postinstall) in drm_irq_install()
529 ret = dev->driver->irq_postinstall(dev); in drm_irq_install()
532 dev->irq_enabled = false; in drm_irq_install()
533 if (!drm_core_check_feature(dev, DRIVER_MODESET)) in drm_irq_install()
534 vga_client_register(dev->pdev, NULL, NULL, NULL); in drm_irq_install()
535 free_irq(irq, dev); in drm_irq_install()
537 dev->irq = irq; in drm_irq_install()
560 int drm_irq_uninstall(struct drm_device *dev) in drm_irq_uninstall() argument
566 if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ)) in drm_irq_uninstall()
569 irq_enabled = dev->irq_enabled; in drm_irq_uninstall()
570 dev->irq_enabled = false; in drm_irq_uninstall()
578 if (dev->num_crtcs) { in drm_irq_uninstall()
579 spin_lock_irqsave(&dev->vbl_lock, irqflags); in drm_irq_uninstall()
580 for (i = 0; i < dev->num_crtcs; i++) { in drm_irq_uninstall()
581 struct drm_vblank_crtc *vblank = &dev->vblank[i]; in drm_irq_uninstall()
586 WARN_ON(drm_core_check_feature(dev, DRIVER_MODESET)); in drm_irq_uninstall()
588 vblank_disable_and_save(dev, i); in drm_irq_uninstall()
591 spin_unlock_irqrestore(&dev->vbl_lock, irqflags); in drm_irq_uninstall()
597 DRM_DEBUG("irq=%d\n", dev->irq); in drm_irq_uninstall()
599 if (!drm_core_check_feature(dev, DRIVER_MODESET)) in drm_irq_uninstall()
600 vga_client_register(dev->pdev, NULL, NULL, NULL); in drm_irq_uninstall()
602 if (dev->driver->irq_uninstall) in drm_irq_uninstall()
603 dev->driver->irq_uninstall(dev); in drm_irq_uninstall()
605 free_irq(dev->irq, dev); in drm_irq_uninstall()
622 int drm_control(struct drm_device *dev, void *data, in drm_control() argument
632 if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ)) in drm_control()
634 if (drm_core_check_feature(dev, DRIVER_MODESET)) in drm_control()
637 if (WARN_ON(!dev->pdev)) in drm_control()
642 irq = dev->pdev->irq; in drm_control()
644 if (dev->if_version < DRM_IF_VERSION(1, 2) && in drm_control()
647 mutex_lock(&dev->struct_mutex); in drm_control()
648 ret = drm_irq_install(dev, irq); in drm_control()
649 mutex_unlock(&dev->struct_mutex); in drm_control()
653 mutex_lock(&dev->struct_mutex); in drm_control()
654 ret = drm_irq_uninstall(dev); in drm_control()
655 mutex_unlock(&dev->struct_mutex); in drm_control()
677 struct drm_device *dev = crtc->dev; in drm_calc_timestamping_constants() local
679 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_calc_timestamping_constants()
683 if (!dev->num_crtcs) in drm_calc_timestamping_constants()
686 if (WARN_ON(pipe >= dev->num_crtcs)) in drm_calc_timestamping_constants()
766 int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev, in drm_calc_vbltimestamp_from_scanoutpos() argument
780 if (pipe >= dev->num_crtcs) { in drm_calc_vbltimestamp_from_scanoutpos()
786 if (!dev->driver->get_scanout_position) { in drm_calc_vbltimestamp_from_scanoutpos()
811 vbl_status = dev->driver->get_scanout_position(dev, pipe, flags, in drm_calc_vbltimestamp_from_scanoutpos()
908 drm_get_last_vbltimestamp(struct drm_device *dev, unsigned int pipe, in drm_get_last_vbltimestamp() argument
917 if (dev->driver->get_vblank_timestamp && (max_error > 0)) { in drm_get_last_vbltimestamp()
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()
972 return drm_vblank_count(crtc->dev, drm_crtc_index(crtc)); in drm_crtc_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()
1032 return drm_vblank_count_and_time(crtc->dev, drm_crtc_index(crtc), in drm_crtc_vblank_count_and_time()
1037 static void send_vblank_event(struct drm_device *dev, in send_vblank_event() argument
1041 assert_spin_locked(&dev->event_lock); in send_vblank_event()
1071 void drm_arm_vblank_event(struct drm_device *dev, unsigned int pipe, in drm_arm_vblank_event() argument
1074 assert_spin_locked(&dev->event_lock); in drm_arm_vblank_event()
1077 e->event.sequence = drm_vblank_count(dev, pipe); in drm_arm_vblank_event()
1078 list_add_tail(&e->base.link, &dev->vblank_event_list); in drm_arm_vblank_event()
1101 drm_arm_vblank_event(crtc->dev, drm_crtc_index(crtc), e); in drm_crtc_arm_vblank_event()
1116 void drm_send_vblank_event(struct drm_device *dev, unsigned int pipe, in drm_send_vblank_event() argument
1122 if (dev->num_crtcs > 0) { in drm_send_vblank_event()
1123 seq = drm_vblank_count_and_time(dev, pipe, &now); in drm_send_vblank_event()
1130 send_vblank_event(dev, e, seq, &now); in drm_send_vblank_event()
1147 drm_send_vblank_event(crtc->dev, drm_crtc_index(crtc), e); in drm_crtc_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()
1164 assert_spin_locked(&dev->vbl_lock); in drm_vblank_enable()
1166 spin_lock(&dev->vblank_time_lock); in drm_vblank_enable()
1176 ret = dev->driver->enable_vblank(dev, pipe); in drm_vblank_enable()
1182 drm_update_vblank_count(dev, pipe, 0); in drm_vblank_enable()
1186 spin_unlock(&dev->vblank_time_lock); 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()
1210 if (!dev->num_crtcs) in drm_vblank_get()
1213 if (WARN_ON(pipe >= dev->num_crtcs)) in drm_vblank_get()
1216 spin_lock_irqsave(&dev->vbl_lock, irqflags); in drm_vblank_get()
1219 ret = drm_vblank_enable(dev, pipe); in drm_vblank_get()
1226 spin_unlock_irqrestore(&dev->vbl_lock, irqflags); in drm_vblank_get()
1246 return drm_vblank_get(crtc->dev, drm_crtc_index(crtc)); in drm_crtc_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()
1274 else if (dev->vblank_disable_immediate || drm_vblank_offdelay < 0) in drm_vblank_put()
1294 drm_vblank_put(crtc->dev, drm_crtc_index(crtc)); in drm_crtc_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()
1320 last = drm_vblank_count(dev, pipe); in drm_wait_one_vblank()
1323 last != drm_vblank_count(dev, pipe), in drm_wait_one_vblank()
1328 drm_vblank_put(dev, pipe); in drm_wait_one_vblank()
1342 drm_wait_one_vblank(crtc->dev, drm_crtc_index(crtc)); in drm_crtc_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()
1371 spin_lock_irqsave(&dev->event_lock, irqflags); in drm_vblank_off()
1373 spin_lock(&dev->vbl_lock); in drm_vblank_off()
1378 if (drm_core_check_feature(dev, DRIVER_ATOMIC) || !vblank->inmodeset) in drm_vblank_off()
1379 vblank_disable_and_save(dev, pipe); in drm_vblank_off()
1391 spin_unlock(&dev->vbl_lock); in drm_vblank_off()
1394 seq = drm_vblank_count_and_time(dev, pipe, &now); in drm_vblank_off()
1396 list_for_each_entry_safe(e, t, &dev->vblank_event_list, base.link) { in drm_vblank_off()
1403 drm_vblank_put(dev, pipe); in drm_vblank_off()
1404 send_vblank_event(dev, e, seq, &now); in drm_vblank_off()
1406 spin_unlock_irqrestore(&dev->event_lock, irqflags); in drm_vblank_off()
1425 drm_vblank_off(crtc->dev, drm_crtc_index(crtc)); in drm_crtc_vblank_off()
1441 struct drm_device *dev = crtc->dev; in drm_crtc_vblank_reset() local
1444 struct drm_vblank_crtc *vblank = &dev->vblank[pipe]; in drm_crtc_vblank_reset()
1446 spin_lock_irqsave(&dev->vbl_lock, irqflags); in drm_crtc_vblank_reset()
1455 spin_unlock_irqrestore(&dev->vbl_lock, irqflags); in drm_crtc_vblank_reset()
1457 WARN_ON(!list_empty(&dev->vblank_event_list)); 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()
1481 spin_lock_irqsave(&dev->vbl_lock, irqflags); 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()
1499 spin_unlock_irqrestore(&dev->vbl_lock, irqflags); in drm_vblank_on()
1516 drm_vblank_on(crtc->dev, drm_crtc_index(crtc)); in drm_crtc_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()
1548 if (!dev->num_crtcs) 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()
1583 if (!dev->num_crtcs) in drm_vblank_post_modeset()
1586 if (WARN_ON(pipe >= dev->num_crtcs)) in drm_vblank_post_modeset()
1590 spin_lock_irqsave(&dev->vbl_lock, irqflags); in drm_vblank_post_modeset()
1591 dev->vblank_disable_allowed = true; in drm_vblank_post_modeset()
1592 drm_reset_vblank_timestamp(dev, pipe); in drm_vblank_post_modeset()
1593 spin_unlock_irqrestore(&dev->vbl_lock, irqflags); in drm_vblank_post_modeset()
1596 drm_vblank_put(dev, pipe); in drm_vblank_post_modeset()
1614 int drm_modeset_ctl(struct drm_device *dev, void *data, in drm_modeset_ctl() argument
1621 if (!dev->num_crtcs) in drm_modeset_ctl()
1625 if (drm_core_check_feature(dev, DRIVER_MODESET)) 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()
1672 spin_lock_irqsave(&dev->event_lock, flags); in drm_queue_vblank_event()
1692 seq = drm_vblank_count_and_time(dev, pipe, &now); in drm_queue_vblank_event()
1708 drm_vblank_put(dev, pipe); in drm_queue_vblank_event()
1709 send_vblank_event(dev, e, seq, &now); in drm_queue_vblank_event()
1713 list_add_tail(&e->base.link, &dev->vblank_event_list); in drm_queue_vblank_event()
1717 spin_unlock_irqrestore(&dev->event_lock, flags); in drm_queue_vblank_event()
1722 spin_unlock_irqrestore(&dev->event_lock, flags); in drm_queue_vblank_event()
1725 drm_vblank_put(dev, pipe); in drm_queue_vblank_event()
1743 int drm_wait_vblank(struct drm_device *dev, void *data, in drm_wait_vblank() argument
1751 if (!dev->irq_enabled) 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()
1812 (((drm_vblank_count(dev, pipe) - in drm_wait_vblank()
1815 !dev->irq_enabled)); 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
1841 assert_spin_locked(&dev->event_lock); in drm_handle_vblank_events()
1843 seq = drm_vblank_count_and_time(dev, pipe, &now); in drm_handle_vblank_events()
1845 list_for_each_entry_safe(e, t, &dev->vblank_event_list, base.link) { in drm_handle_vblank_events()
1855 drm_vblank_put(dev, pipe); in drm_handle_vblank_events()
1856 send_vblank_event(dev, e, seq, &now); 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()
1877 if (WARN_ON_ONCE(!dev->num_crtcs)) in drm_handle_vblank()
1880 if (WARN_ON(pipe >= dev->num_crtcs)) in drm_handle_vblank()
1883 spin_lock_irqsave(&dev->event_lock, irqflags); in drm_handle_vblank()
1889 spin_lock(&dev->vblank_time_lock); in drm_handle_vblank()
1893 spin_unlock(&dev->vblank_time_lock); in drm_handle_vblank()
1894 spin_unlock_irqrestore(&dev->event_lock, irqflags); in drm_handle_vblank()
1898 drm_update_vblank_count(dev, pipe, DRM_CALLED_FROM_VBLIRQ); in drm_handle_vblank()
1900 spin_unlock(&dev->vblank_time_lock); in drm_handle_vblank()
1903 drm_handle_vblank_events(dev, pipe); in drm_handle_vblank()
1905 spin_unlock_irqrestore(&dev->event_lock, irqflags); in drm_handle_vblank()
1925 return drm_handle_vblank(crtc->dev, drm_crtc_index(crtc)); in drm_crtc_handle_vblank()
1940 u32 drm_vblank_no_hw_counter(struct drm_device *dev, unsigned int pipe) in drm_vblank_no_hw_counter() argument