Lines Matching refs:dev

123 void drm_dev_printk(const struct device *dev, const char *level,  in drm_dev_printk()  argument
137 if (dev) in drm_dev_printk()
139 dev_printk(level, dev, DRM_PRINTK_FMT, function_name, prefix, in drm_dev_printk()
146 dev_printk(level, dev, DRM_PRINTK_FMT_DFLY, function_name, prefix); in drm_dev_printk()
200 static struct drm_minor **drm_minor_get_slot(struct drm_device *dev, in drm_minor_get_slot() argument
205 return &dev->primary; in drm_minor_get_slot()
207 return &dev->render; in drm_minor_get_slot()
209 return &dev->control; in drm_minor_get_slot()
215 static int drm_minor_alloc(struct drm_device *dev, unsigned int type) in drm_minor_alloc() argument
226 minor->dev = dev; in drm_minor_alloc()
249 *drm_minor_get_slot(dev, type) = minor; in drm_minor_alloc()
261 static void drm_minor_free(struct drm_device *dev, unsigned int type) in drm_minor_free() argument
266 slot = drm_minor_get_slot(dev, type); in drm_minor_free()
283 static int drm_minor_register(struct drm_device *dev, unsigned int type) in drm_minor_register() argument
291 minor = *drm_minor_get_slot(dev, type); in drm_minor_register()
322 static void drm_minor_unregister(struct drm_device *dev, unsigned int type) in drm_minor_unregister() argument
327 minor = *drm_minor_get_slot(dev, type); in drm_minor_unregister()
364 drm_dev_get(minor->dev); in drm_minor_acquire()
369 } else if (drm_dev_is_unplugged(minor->dev)) { in drm_minor_acquire()
370 drm_dev_put(minor->dev); in drm_minor_acquire()
379 drm_dev_put(minor->dev); in drm_minor_release()
429 void drm_put_dev(struct drm_device *dev)
433 if (!dev) {
438 drm_dev_unregister(dev);
439 drm_dev_put(dev);
443 static void drm_device_set_unplugged(struct drm_device *dev)
446 atomic_set(&dev->unplugged, 1);
458 void drm_dev_unplug(struct drm_device *dev)
460 drm_dev_unregister(dev);
463 drm_device_set_unplugged(dev);
464 if (dev->open_count == 0)
465 drm_dev_put(dev);
573 int drm_dev_init(struct drm_device *dev, in drm_dev_init() argument
581 softc->drm_driver_data = dev; in drm_dev_init()
589 kref_init(&dev->ref); in drm_dev_init()
590 dev->dev = parent; in drm_dev_init()
591 dev->driver = driver; in drm_dev_init()
593 INIT_LIST_HEAD(&dev->filelist); in drm_dev_init()
594 INIT_LIST_HEAD(&dev->ctxlist); in drm_dev_init()
595 INIT_LIST_HEAD(&dev->vmalist); in drm_dev_init()
596 INIT_LIST_HEAD(&dev->maplist); in drm_dev_init()
597 INIT_LIST_HEAD(&dev->vblank_event_list); in drm_dev_init()
599 lockinit(&dev->buf_lock, "drmdbl", 0, 0); in drm_dev_init()
600 lockinit(&dev->event_lock, "drmev", 0, 0); in drm_dev_init()
601 lockinit(&dev->struct_mutex, "drmslk", 0, LK_CANRECURSE); in drm_dev_init()
602 lockinit(&dev->filelist_mutex, "drmflm", 0, LK_CANRECURSE); in drm_dev_init()
603 lockinit(&dev->ctxlist_mutex, "drmclm", 0, LK_CANRECURSE); in drm_dev_init()
604 lockinit(&dev->master_mutex, "drmmm", 0, LK_CANRECURSE); in drm_dev_init()
607 dev->anon_inode = drm_fs_inode_new(); in drm_dev_init()
608 if (IS_ERR(dev->anon_inode)) { in drm_dev_init()
609 ret = PTR_ERR(dev->anon_inode); in drm_dev_init()
614 dev->anon_inode = NULL; in drm_dev_init()
615 dev->pci_domain = pci_get_domain(dev->dev->bsddev); in drm_dev_init()
616 dev->pci_bus = pci_get_bus(dev->dev->bsddev); in drm_dev_init()
617 dev->pci_slot = pci_get_slot(dev->dev->bsddev); in drm_dev_init()
618 dev->pci_func = pci_get_function(dev->dev->bsddev); in drm_dev_init()
619 drm_sysctl_init(dev); in drm_dev_init()
622 if (drm_core_check_feature(dev, DRIVER_RENDER)) { in drm_dev_init()
623 ret = drm_minor_alloc(dev, DRM_MINOR_RENDER); in drm_dev_init()
628 ret = drm_minor_alloc(dev, DRM_MINOR_PRIMARY); in drm_dev_init()
632 ret = drm_ht_create(&dev->map_hash, 12); in drm_dev_init()
636 drm_legacy_ctxbitmap_init(dev); in drm_dev_init()
638 if (drm_core_check_feature(dev, DRIVER_GEM)) { in drm_dev_init()
639 ret = drm_gem_init(dev); in drm_dev_init()
649 ret = drm_dev_set_unique(dev, parent ? dev_name(parent) : driver->name); in drm_dev_init()
658 if (drm_core_check_feature(dev, DRIVER_GEM)) in drm_dev_init()
659 drm_gem_destroy(dev); in drm_dev_init()
662 drm_legacy_ctxbitmap_cleanup(dev); in drm_dev_init()
663 drm_ht_remove(&dev->map_hash); in drm_dev_init()
665 drm_minor_free(dev, DRM_MINOR_PRIMARY); in drm_dev_init()
666 drm_minor_free(dev, DRM_MINOR_RENDER); in drm_dev_init()
667 drm_minor_free(dev, DRM_MINOR_CONTROL); in drm_dev_init()
669 drm_fs_inode_free(dev->anon_inode); in drm_dev_init()
672 mutex_destroy(&dev->master_mutex); in drm_dev_init()
673 mutex_destroy(&dev->ctxlist_mutex); in drm_dev_init()
674 mutex_destroy(&dev->filelist_mutex); in drm_dev_init()
675 mutex_destroy(&dev->struct_mutex); in drm_dev_init()
677 drm_sysctl_cleanup(dev); in drm_dev_init()
695 void drm_dev_fini(struct drm_device *dev) in drm_dev_fini() argument
697 drm_vblank_cleanup(dev); in drm_dev_fini()
699 if (drm_core_check_feature(dev, DRIVER_GEM)) in drm_dev_fini()
700 drm_gem_destroy(dev); in drm_dev_fini()
702 drm_legacy_ctxbitmap_cleanup(dev); in drm_dev_fini()
703 drm_ht_remove(&dev->map_hash); in drm_dev_fini()
705 drm_fs_inode_free(dev->anon_inode); in drm_dev_fini()
708 drm_minor_free(dev, DRM_MINOR_PRIMARY); in drm_dev_fini()
709 drm_minor_free(dev, DRM_MINOR_RENDER); in drm_dev_fini()
710 drm_minor_free(dev, DRM_MINOR_CONTROL); in drm_dev_fini()
712 mutex_destroy(&dev->master_mutex); in drm_dev_fini()
713 mutex_destroy(&dev->ctxlist_mutex); in drm_dev_fini()
714 mutex_destroy(&dev->filelist_mutex); in drm_dev_fini()
715 mutex_destroy(&dev->struct_mutex); in drm_dev_fini()
716 kfree(dev->unique); in drm_dev_fini()
745 struct drm_device *dev; in drm_dev_alloc() local
748 dev = kzalloc(sizeof(*dev), GFP_KERNEL); in drm_dev_alloc()
749 if (!dev) in drm_dev_alloc()
752 ret = drm_dev_init(dev, driver, parent); in drm_dev_alloc()
754 kfree(dev); in drm_dev_alloc()
758 return dev; in drm_dev_alloc()
764 struct drm_device *dev = container_of(ref, struct drm_device, ref); in drm_dev_release() local
766 if (dev->driver->release) { in drm_dev_release()
767 dev->driver->release(dev); in drm_dev_release()
769 drm_dev_fini(dev); in drm_dev_release()
770 kfree(dev); in drm_dev_release()
786 void drm_dev_get(struct drm_device *dev) in drm_dev_get() argument
788 if (dev) in drm_dev_get()
789 kref_get(&dev->ref); in drm_dev_get()
800 void drm_dev_put(struct drm_device *dev) in drm_dev_put() argument
802 if (dev) in drm_dev_put()
803 kref_put(&dev->ref, drm_dev_release); in drm_dev_put()
814 void drm_dev_unref(struct drm_device *dev) in drm_dev_unref() argument
816 drm_dev_put(dev); in drm_dev_unref()
820 static int create_compat_control_link(struct drm_device *dev) in create_compat_control_link() argument
826 if (!drm_core_check_feature(dev, DRIVER_MODESET)) in create_compat_control_link()
829 minor = *drm_minor_get_slot(dev, DRM_MINOR_PRIMARY); in create_compat_control_link()
859 static void remove_compat_control_link(struct drm_device *dev) in remove_compat_control_link() argument
864 if (!drm_core_check_feature(dev, DRIVER_MODESET)) in remove_compat_control_link()
867 minor = *drm_minor_get_slot(dev, DRM_MINOR_PRIMARY); in remove_compat_control_link()
902 int drm_dev_register(struct drm_device *dev, unsigned long flags) in drm_dev_register() argument
904 struct drm_driver *driver = dev->driver; in drm_dev_register()
909 ret = drm_minor_register(dev, DRM_MINOR_CONTROL); in drm_dev_register()
913 ret = drm_minor_register(dev, DRM_MINOR_RENDER); in drm_dev_register()
917 ret = drm_minor_register(dev, DRM_MINOR_PRIMARY); in drm_dev_register()
921 ret = create_compat_control_link(dev); in drm_dev_register()
925 dev->registered = true; in drm_dev_register()
927 if (dev->driver->load) { in drm_dev_register()
928 ret = dev->driver->load(dev, flags); in drm_dev_register()
933 if (drm_core_check_feature(dev, DRIVER_MODESET)) in drm_dev_register()
934 drm_modeset_register_all(dev); in drm_dev_register()
941 dev->dev ? dev_name(dev->dev) : "virtual device", in drm_dev_register()
942 dev->primary->index); in drm_dev_register()
947 remove_compat_control_link(dev); in drm_dev_register()
948 drm_minor_unregister(dev, DRM_MINOR_PRIMARY); in drm_dev_register()
949 drm_minor_unregister(dev, DRM_MINOR_RENDER); in drm_dev_register()
950 drm_minor_unregister(dev, DRM_MINOR_CONTROL); in drm_dev_register()
971 void drm_dev_unregister(struct drm_device *dev) in drm_dev_unregister() argument
975 if (drm_core_check_feature(dev, DRIVER_LEGACY)) in drm_dev_unregister()
976 drm_lastclose(dev); in drm_dev_unregister()
978 dev->registered = false; in drm_dev_unregister()
980 if (drm_core_check_feature(dev, DRIVER_MODESET)) in drm_dev_unregister()
981 drm_modeset_unregister_all(dev); in drm_dev_unregister()
983 if (dev->driver->unload) in drm_dev_unregister()
984 dev->driver->unload(dev); in drm_dev_unregister()
987 if (dev->agp) in drm_dev_unregister()
988 drm_pci_agp_destroy(dev); in drm_dev_unregister()
991 list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head) in drm_dev_unregister()
992 drm_legacy_rmmap(dev, r_list->map); in drm_dev_unregister()
994 remove_compat_control_link(dev); in drm_dev_unregister()
995 drm_minor_unregister(dev, DRM_MINOR_PRIMARY); in drm_dev_unregister()
996 drm_minor_unregister(dev, DRM_MINOR_RENDER); in drm_dev_unregister()
997 drm_minor_unregister(dev, DRM_MINOR_CONTROL); in drm_dev_unregister()
1013 int drm_dev_set_unique(struct drm_device *dev, const char *name)
1015 kfree(dev->unique);
1016 dev->unique = kstrdup(name, GFP_KERNEL);
1018 return dev->unique ? 0 : -ENOMEM;
1057 new_fops = fops_get(minor->dev->driver->fops);
1196 struct drm_device *dev;
1201 dev = softc->drm_driver_data;
1205 dev->devnode = make_dev(&drm_cdevsw, unit, DRM_DEV_UID, DRM_DEV_GID,
1209 dev->devnode->si_drv1 = dev;
1224 struct drm_device *dev = file_priv->dev; in drm_cdevpriv_dtor() local
1226 DRM_DEBUG("open_count = %d\n", dev->open_count); in drm_cdevpriv_dtor()
1228 DRM_LOCK(dev); in drm_cdevpriv_dtor()
1230 if (dev->driver->preclose != NULL) in drm_cdevpriv_dtor()
1231 dev->driver->preclose(dev, file_priv); in drm_cdevpriv_dtor()
1238 DRM_CURRENTPID, (long)dev->dev, dev->open_count); in drm_cdevpriv_dtor()
1240 if (dev->driver->driver_features & DRIVER_GEM) in drm_cdevpriv_dtor()
1241 drm_gem_release(dev, file_priv); in drm_cdevpriv_dtor()
1243 if (drm_core_check_feature(dev, DRIVER_HAVE_DMA)) in drm_cdevpriv_dtor()
1244 drm_legacy_reclaim_buffers(dev, file_priv); in drm_cdevpriv_dtor()
1246 funsetown(&dev->buf_sigio); in drm_cdevpriv_dtor()
1248 if (dev->driver->postclose != NULL) in drm_cdevpriv_dtor()
1249 dev->driver->postclose(dev, file_priv); in drm_cdevpriv_dtor()
1257 device_unbusy(dev->dev->bsddev); in drm_cdevpriv_dtor()
1258 if (--dev->open_count == 0) { in drm_cdevpriv_dtor()
1259 drm_lastclose(dev); in drm_cdevpriv_dtor()
1262 DRM_UNLOCK(dev); in drm_cdevpriv_dtor()
1266 drm_add_busid_modesetting(struct drm_device *dev, struct sysctl_ctx_list *ctx, in drm_add_busid_modesetting() argument
1271 ksnprintf(dev->busid_str, sizeof(dev->busid_str), in drm_add_busid_modesetting()
1272 "pci:%04x:%02x:%02x.%d", dev->pci_domain, dev->pci_bus, in drm_add_busid_modesetting()
1273 dev->pci_slot, dev->pci_func); in drm_add_busid_modesetting()
1275 CTLFLAG_RD, dev->busid_str, 0, NULL); in drm_add_busid_modesetting()
1285 struct drm_device *dev; in drm_mmap_single() local
1292 dev = drm_get_device_from_kdev(kdev); in drm_mmap_single()
1293 if (dev->drm_ttm_bdev != NULL) { in drm_mmap_single()
1294 return (ttm_bo_mmap_single(ap->a_fp, dev, in drm_mmap_single()
1296 } else if ((dev->driver->driver_features & DRIVER_GEM) != 0) { in drm_mmap_single()
1297 return (drm_gem_mmap_single(dev, offset, size, obj_res, nprot)); in drm_mmap_single()