Lines Matching refs:dev

41 			   DRM_STRUCTPROC *p, struct drm_device *dev);
43 static int drm_setup(struct drm_device * dev) in drm_setup() argument
48 if (dev->driver->firstopen) { in drm_setup()
49 ret = dev->driver->firstopen(dev); in drm_setup()
54 atomic_set(&dev->ioctl_count, 0); in drm_setup()
55 atomic_set(&dev->vma_count, 0); in drm_setup()
57 if (drm_core_check_feature(dev, DRIVER_HAVE_DMA) && in drm_setup()
58 !drm_core_check_feature(dev, DRIVER_MODESET)) { in drm_setup()
59 dev->buf_use = 0; in drm_setup()
60 atomic_set(&dev->buf_alloc, 0); in drm_setup()
62 i = drm_dma_setup(dev); in drm_setup()
72 for (i = 0; i < ARRAY_SIZE(dev->counts); i++) in drm_setup()
73 atomic_set(&dev->counts[i], 0); in drm_setup()
76 dev->sigdata.lock = NULL; in drm_setup()
78 dev->context_flag = 0; in drm_setup()
79 dev->interrupt_flag = 0; in drm_setup()
80 dev->dma_flag = 0; in drm_setup()
81 dev->last_context = 0; in drm_setup()
82 dev->last_switch = 0; in drm_setup()
83 dev->last_checked = 0; in drm_setup()
84 DRM_INIT_WAITQUEUE(&dev->context_wait); in drm_setup()
85 dev->if_version = 0; in drm_setup()
88 dev->ctx_start = 0; in drm_setup()
89 dev->lck_start = 0; in drm_setup()
91 dev->buf_async = NULL; in drm_setup()
92 DRM_INIT_WAITQUEUE(&dev->buf_readers); in drm_setup()
93 DRM_INIT_WAITQUEUE(&dev->buf_writers); in drm_setup()
122 struct drm_device *dev = NULL; in drm_open() local
131 if (!(dev = minor->dev)) in drm_open()
140 if (!dev->open_count++) in drm_open()
143 retcode = drm_open_helper(kdev, flags, fmt, p, dev); in drm_open()
148 atomic_inc(&dev->counts[_DRM_STAT_OPENS]); in drm_open()
150 retcode = drm_setup(dev); in drm_open()
158 device_unbusy(dev->dev); in drm_open()
159 dev->open_count--; in drm_open()
177 DRM_STRUCTPROC *p, struct drm_device *dev) in drm_open_helper() argument
184 if (dev->switch_power_state != DRM_SWITCH_POWER_ON) in drm_open_helper()
206 if (dev->driver->driver_features & DRIVER_GEM) in drm_open_helper()
207 drm_gem_open(dev, priv); in drm_open_helper()
210 if (drm_core_check_feature(dev, DRIVER_PRIME)) in drm_open_helper()
214 if (dev->driver->open) { in drm_open_helper()
215 ret = dev->driver->open(dev, priv); in drm_open_helper()
222 DRM_LOCK(dev); in drm_open_helper()
227 DRM_UNLOCK(dev); in drm_open_helper()
238 DRM_UNLOCK(dev); in drm_open_helper()
239 if (dev->driver->master_create) { in drm_open_helper()
240 ret = dev->driver->master_create(dev, priv->master); in drm_open_helper()
242 DRM_LOCK(dev); in drm_open_helper()
246 DRM_UNLOCK(dev); in drm_open_helper()
250 DRM_LOCK(dev); in drm_open_helper()
251 if (dev->driver->master_set) { in drm_open_helper()
252 ret = dev->driver->master_set(dev, priv, true); in drm_open_helper()
257 DRM_UNLOCK(dev); in drm_open_helper()
261 DRM_UNLOCK(dev); in drm_open_helper()
265 DRM_UNLOCK(dev); in drm_open_helper()
268 DRM_LOCK(dev); in drm_open_helper()
269 list_add(&priv->lhead, &dev->filelist); in drm_open_helper()
270 DRM_UNLOCK(dev); in drm_open_helper()
272 device_busy(dev->dev); in drm_open_helper()
284 static void drm_master_release(struct drm_device *dev, struct drm_file *file_priv) in drm_master_release() argument
287 if (drm_i_have_hw_lock(dev, file_priv)) { in drm_master_release()
297 struct drm_device *dev = file_priv->minor->dev; in drm_events_release() local
302 DRM_SPINLOCK_IRQSAVE(&dev->event_lock, flags); in drm_events_release()
305 list_for_each_entry_safe(v, vt, &dev->vblank_event_list, base.link) in drm_events_release()
308 drm_vblank_put(dev, v->pipe); in drm_events_release()
316 DRM_SPINUNLOCK_IRQRESTORE(&dev->event_lock, flags); in drm_events_release()
334 struct drm_device *dev = file_priv->minor->dev; in drm_release() local
338 DRM_DEBUG("open_count = %d\n", dev->open_count); in drm_release()
340 if (dev->driver->preclose) in drm_release()
341 dev->driver->preclose(dev, file_priv); in drm_release()
350 dev->open_count); in drm_release()
359 drm_master_release(dev, file_priv); in drm_release()
361 if (drm_core_check_feature(dev, DRIVER_HAVE_DMA)) in drm_release()
362 drm_core_reclaim_buffers(dev, file_priv); in drm_release()
368 if (dev->driver->driver_features & DRIVER_MODESET) in drm_release()
371 if (dev->driver->driver_features & DRIVER_GEM) in drm_release()
372 drm_gem_release(dev, file_priv); in drm_release()
375 mutex_lock(&dev->ctxlist_mutex); in drm_release()
376 if (!list_empty(&dev->ctxlist)) { in drm_release()
379 list_for_each_entry_safe(pos, n, &dev->ctxlist, head) { in drm_release()
382 if (dev->driver->context_dtor) in drm_release()
383 dev->driver->context_dtor(dev, in drm_release()
386 drm_ctxbitmap_free(dev, pos->handle); in drm_release()
390 --dev->ctx_count; in drm_release()
394 mutex_unlock(&dev->ctxlist_mutex); in drm_release()
397 DRM_LOCK(dev); in drm_release()
402 list_for_each_entry(temp, &dev->filelist, lhead) { in drm_release()
414 if (dev->sigdata.lock == master->lock.hw_lock) in drm_release()
415 dev->sigdata.lock = NULL; in drm_release()
423 if (dev->driver->master_drop) in drm_release()
424 dev->driver->master_drop(dev, file_priv, true); in drm_release()
433 DRM_UNLOCK(dev); in drm_release()
435 if (dev->driver->postclose) in drm_release()
436 dev->driver->postclose(dev, file_priv); in drm_release()
439 if (drm_core_check_feature(dev, DRIVER_PRIME)) in drm_release()
449 atomic_inc(&dev->counts[_DRM_STAT_CLOSES]); in drm_release()
450 device_unbusy(dev->dev); in drm_release()
451 if (!--dev->open_count) { in drm_release()
452 if (atomic_read(&dev->ioctl_count)) { in drm_release()
454 atomic_read(&dev->ioctl_count)); in drm_release()
456 drm_lastclose(dev); in drm_release()
494 struct drm_device *dev; in drm_read() local
504 dev = drm_get_device_from_kdev(kdev); in drm_read()
505 mtx_lock(&dev->event_lock); in drm_read()
511 error = msleep(&file_priv->event_space, &dev->event_lock, in drm_read()
518 mtx_unlock(&dev->event_lock); in drm_read()
526 mtx_lock(&dev->event_lock); in drm_read()
530 mtx_unlock(&dev->event_lock); in drm_read()
539 struct drm_device *dev __diagused; in drm_event_wakeup()
542 dev = file_priv->minor->dev; in drm_event_wakeup()
543 mtx_assert(&dev->event_lock, MA_OWNED); in drm_event_wakeup()
553 struct drm_device *dev; in drm_poll() local
562 dev = drm_get_device_from_kdev(kdev); in drm_poll()
565 mtx_lock(&dev->event_lock); in drm_poll()
575 mtx_unlock(&dev->event_lock); in drm_poll()
584 struct drm_device *dev; in drm_mmap_single() local
586 dev = drm_get_device_from_kdev(kdev); in drm_mmap_single()
587 if (dev->drm_ttm_bdev != NULL) { in drm_mmap_single()
588 return (-ttm_bo_mmap_single(dev->drm_ttm_bdev, offset, size, in drm_mmap_single()
590 } else if ((dev->driver->driver_features & DRIVER_GEM) != 0) { in drm_mmap_single()
591 return (-drm_gem_mmap_single(dev, offset, size, obj_res, nprot)); in drm_mmap_single()