Lines Matching refs:dev

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