Lines Matching refs:dev

128 	struct drm_device *dev = master->minor->dev;  in drm_master_destroy()  local
131 mutex_lock(&dev->struct_mutex); in drm_master_destroy()
132 if (dev->driver->master_destroy) in drm_master_destroy()
133 dev->driver->master_destroy(dev, master); in drm_master_destroy()
135 list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head) { in drm_master_destroy()
137 drm_legacy_rmmap_locked(dev, r_list->map); in drm_master_destroy()
150 mutex_unlock(&dev->struct_mutex); in drm_master_destroy()
161 int drm_setmaster_ioctl(struct drm_device *dev, void *data, in drm_setmaster_ioctl() argument
166 mutex_lock(&dev->master_mutex); in drm_setmaster_ioctl()
182 if (dev->driver->master_set) { in drm_setmaster_ioctl()
183 ret = dev->driver->master_set(dev, file_priv, false); in drm_setmaster_ioctl()
191 mutex_unlock(&dev->master_mutex); in drm_setmaster_ioctl()
195 int drm_dropmaster_ioctl(struct drm_device *dev, void *data, in drm_dropmaster_ioctl() argument
200 mutex_lock(&dev->master_mutex); in drm_dropmaster_ioctl()
208 if (dev->driver->master_drop) in drm_dropmaster_ioctl()
209 dev->driver->master_drop(dev, file_priv, false); in drm_dropmaster_ioctl()
214 mutex_unlock(&dev->master_mutex); in drm_dropmaster_ioctl()
231 static struct drm_minor **drm_minor_get_slot(struct drm_device *dev, in drm_minor_get_slot() argument
236 return &dev->primary; in drm_minor_get_slot()
238 return &dev->render; in drm_minor_get_slot()
240 return &dev->control; in drm_minor_get_slot()
246 static int drm_minor_alloc(struct drm_device *dev, unsigned int type) in drm_minor_alloc() argument
257 minor->dev = dev; in drm_minor_alloc()
280 *drm_minor_get_slot(dev, type) = minor; in drm_minor_alloc()
292 static void drm_minor_free(struct drm_device *dev, unsigned int type) in drm_minor_free() argument
297 slot = drm_minor_get_slot(dev, type); in drm_minor_free()
313 static int drm_minor_register(struct drm_device *dev, unsigned int type) in drm_minor_register() argument
321 minor = *drm_minor_get_slot(dev, type); in drm_minor_register()
348 static void drm_minor_unregister(struct drm_device *dev, unsigned int type) in drm_minor_unregister() argument
353 minor = *drm_minor_get_slot(dev, type); in drm_minor_unregister()
391 drm_dev_ref(minor->dev); in drm_minor_acquire()
396 } else if (drm_device_is_unplugged(minor->dev)) { in drm_minor_acquire()
397 drm_dev_unref(minor->dev); in drm_minor_acquire()
412 drm_dev_unref(minor->dev); in drm_minor_release()
426 void drm_put_dev(struct drm_device *dev) in drm_put_dev() argument
430 if (!dev) { in drm_put_dev()
435 drm_dev_unregister(dev); in drm_put_dev()
436 drm_dev_unref(dev); in drm_put_dev()
440 void drm_unplug_dev(struct drm_device *dev) in drm_unplug_dev() argument
443 drm_minor_unregister(dev, DRM_MINOR_LEGACY); in drm_unplug_dev()
444 drm_minor_unregister(dev, DRM_MINOR_RENDER); in drm_unplug_dev()
445 drm_minor_unregister(dev, DRM_MINOR_CONTROL); in drm_unplug_dev()
449 drm_device_set_unplugged(dev); in drm_unplug_dev()
451 if (dev->open_count == 0) { in drm_unplug_dev()
452 drm_put_dev(dev); in drm_unplug_dev()
550 struct drm_device *dev; in drm_dev_alloc() local
553 dev = kzalloc(sizeof(*dev), GFP_KERNEL); in drm_dev_alloc()
554 if (!dev) in drm_dev_alloc()
557 kref_init(&dev->ref); in drm_dev_alloc()
558 dev->dev = parent; in drm_dev_alloc()
559 dev->driver = driver; in drm_dev_alloc()
561 INIT_LIST_HEAD(&dev->filelist); in drm_dev_alloc()
562 INIT_LIST_HEAD(&dev->ctxlist); in drm_dev_alloc()
563 INIT_LIST_HEAD(&dev->vmalist); in drm_dev_alloc()
564 INIT_LIST_HEAD(&dev->maplist); in drm_dev_alloc()
565 INIT_LIST_HEAD(&dev->vblank_event_list); in drm_dev_alloc()
567 spin_lock_init(&dev->buf_lock); in drm_dev_alloc()
568 spin_lock_init(&dev->event_lock); in drm_dev_alloc()
569 mutex_init(&dev->struct_mutex); in drm_dev_alloc()
570 mutex_init(&dev->ctxlist_mutex); in drm_dev_alloc()
571 mutex_init(&dev->master_mutex); in drm_dev_alloc()
573 dev->anon_inode = drm_fs_inode_new(); in drm_dev_alloc()
574 if (IS_ERR(dev->anon_inode)) { in drm_dev_alloc()
575 ret = PTR_ERR(dev->anon_inode); in drm_dev_alloc()
580 if (drm_core_check_feature(dev, DRIVER_MODESET)) { in drm_dev_alloc()
581 ret = drm_minor_alloc(dev, DRM_MINOR_CONTROL); in drm_dev_alloc()
586 if (drm_core_check_feature(dev, DRIVER_RENDER)) { in drm_dev_alloc()
587 ret = drm_minor_alloc(dev, DRM_MINOR_RENDER); in drm_dev_alloc()
592 ret = drm_minor_alloc(dev, DRM_MINOR_LEGACY); in drm_dev_alloc()
596 if (drm_ht_create(&dev->map_hash, 12)) in drm_dev_alloc()
599 ret = drm_legacy_ctxbitmap_init(dev); in drm_dev_alloc()
605 if (drm_core_check_feature(dev, DRIVER_GEM)) { in drm_dev_alloc()
606 ret = drm_gem_init(dev); in drm_dev_alloc()
613 return dev; in drm_dev_alloc()
616 drm_legacy_ctxbitmap_cleanup(dev); in drm_dev_alloc()
618 drm_ht_remove(&dev->map_hash); in drm_dev_alloc()
620 drm_minor_free(dev, DRM_MINOR_LEGACY); in drm_dev_alloc()
621 drm_minor_free(dev, DRM_MINOR_RENDER); in drm_dev_alloc()
622 drm_minor_free(dev, DRM_MINOR_CONTROL); in drm_dev_alloc()
623 drm_fs_inode_free(dev->anon_inode); in drm_dev_alloc()
625 mutex_destroy(&dev->master_mutex); in drm_dev_alloc()
626 kfree(dev); in drm_dev_alloc()
633 struct drm_device *dev = container_of(ref, struct drm_device, ref); in drm_dev_release() local
635 if (drm_core_check_feature(dev, DRIVER_GEM)) in drm_dev_release()
636 drm_gem_destroy(dev); in drm_dev_release()
638 drm_legacy_ctxbitmap_cleanup(dev); in drm_dev_release()
639 drm_ht_remove(&dev->map_hash); in drm_dev_release()
640 drm_fs_inode_free(dev->anon_inode); in drm_dev_release()
642 drm_minor_free(dev, DRM_MINOR_LEGACY); in drm_dev_release()
643 drm_minor_free(dev, DRM_MINOR_RENDER); in drm_dev_release()
644 drm_minor_free(dev, DRM_MINOR_CONTROL); in drm_dev_release()
646 mutex_destroy(&dev->master_mutex); in drm_dev_release()
647 kfree(dev->unique); in drm_dev_release()
648 kfree(dev); in drm_dev_release()
663 void drm_dev_ref(struct drm_device *dev) in drm_dev_ref() argument
665 if (dev) in drm_dev_ref()
666 kref_get(&dev->ref); in drm_dev_ref()
677 void drm_dev_unref(struct drm_device *dev) in drm_dev_unref() argument
679 if (dev) in drm_dev_unref()
680 kref_put(&dev->ref, drm_dev_release); in drm_dev_unref()
698 int drm_dev_register(struct drm_device *dev, unsigned long flags) in drm_dev_register() argument
704 ret = drm_minor_register(dev, DRM_MINOR_CONTROL); in drm_dev_register()
708 ret = drm_minor_register(dev, DRM_MINOR_RENDER); in drm_dev_register()
712 ret = drm_minor_register(dev, DRM_MINOR_LEGACY); in drm_dev_register()
716 if (dev->driver->load) { in drm_dev_register()
717 ret = dev->driver->load(dev, flags); in drm_dev_register()
723 if (drm_core_check_feature(dev, DRIVER_MODESET)) { in drm_dev_register()
724 ret = drm_mode_group_init_legacy_group(dev, in drm_dev_register()
725 &dev->primary->mode_group); in drm_dev_register()
734 if (dev->driver->unload) in drm_dev_register()
735 dev->driver->unload(dev); in drm_dev_register()
737 drm_minor_unregister(dev, DRM_MINOR_LEGACY); in drm_dev_register()
738 drm_minor_unregister(dev, DRM_MINOR_RENDER); in drm_dev_register()
739 drm_minor_unregister(dev, DRM_MINOR_CONTROL); in drm_dev_register()
754 void drm_dev_unregister(struct drm_device *dev) in drm_dev_unregister() argument
758 drm_lastclose(dev); in drm_dev_unregister()
760 if (dev->driver->unload) in drm_dev_unregister()
761 dev->driver->unload(dev); in drm_dev_unregister()
763 if (dev->agp) in drm_dev_unregister()
764 drm_pci_agp_destroy(dev); in drm_dev_unregister()
766 drm_vblank_cleanup(dev); in drm_dev_unregister()
768 list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head) in drm_dev_unregister()
769 drm_legacy_rmmap(dev, r_list->map); in drm_dev_unregister()
771 drm_minor_unregister(dev, DRM_MINOR_LEGACY); in drm_dev_unregister()
772 drm_minor_unregister(dev, DRM_MINOR_RENDER); in drm_dev_unregister()
773 drm_minor_unregister(dev, DRM_MINOR_CONTROL); in drm_dev_unregister()
788 int drm_dev_set_unique(struct drm_device *dev, const char *fmt, ...) in drm_dev_set_unique() argument
792 kfree(dev->unique); in drm_dev_set_unique()
795 dev->unique = kvasprintf(GFP_KERNEL, fmt, ap); in drm_dev_set_unique()
798 return dev->unique ? 0 : -ENOMEM; in drm_dev_set_unique()
837 new_fops = fops_get(minor->dev->driver->fops); in drm_stub_open()