Lines Matching full:minor
92 * device. However, this doesn't mean that the minor is active. Minors are
111 struct drm_minor *minor; in drm_minor_alloc() local
115 minor = kzalloc(sizeof(*minor), GFP_KERNEL); in drm_minor_alloc()
116 if (!minor) in drm_minor_alloc()
119 minor->type = type; in drm_minor_alloc()
120 minor->dev = dev; in drm_minor_alloc()
135 minor->index = r; in drm_minor_alloc()
137 minor->kdev = drm_sysfs_minor_alloc(minor); in drm_minor_alloc()
138 if (IS_ERR(minor->kdev)) { in drm_minor_alloc()
139 r = PTR_ERR(minor->kdev); in drm_minor_alloc()
143 *drm_minor_get_slot(dev, type) = minor; in drm_minor_alloc()
148 idr_remove(&drm_minors_idr, minor->index); in drm_minor_alloc()
151 kfree(minor); in drm_minor_alloc()
157 struct drm_minor **slot, *minor; in drm_minor_free() local
161 minor = *slot; in drm_minor_free()
162 if (!minor) in drm_minor_free()
165 put_device(minor->kdev); in drm_minor_free()
168 idr_remove(&drm_minors_idr, minor->index); in drm_minor_free()
171 kfree(minor); in drm_minor_free()
177 struct drm_minor *minor; in drm_minor_register() local
183 minor = *drm_minor_get_slot(dev, type); in drm_minor_register()
184 if (!minor) in drm_minor_register()
187 ret = drm_debugfs_init(minor, minor->index, drm_debugfs_root); in drm_minor_register()
193 ret = device_add(minor->kdev); in drm_minor_register()
197 /* replace NULL with @minor so lookups will succeed from now on */ in drm_minor_register()
199 idr_replace(&drm_minors_idr, minor, minor->index); in drm_minor_register()
202 DRM_DEBUG("new minor registered %d\n", minor->index); in drm_minor_register()
206 drm_debugfs_cleanup(minor); in drm_minor_register()
212 struct drm_minor *minor; in drm_minor_unregister() local
215 minor = *drm_minor_get_slot(dev, type); in drm_minor_unregister()
216 if (!minor || !device_is_registered(minor->kdev)) in drm_minor_unregister()
219 /* replace @minor with NULL so lookups will fail from now on */ in drm_minor_unregister()
221 idr_replace(&drm_minors_idr, NULL, minor->index); in drm_minor_unregister()
224 device_del(minor->kdev); in drm_minor_unregister()
225 dev_set_drvdata(minor->kdev, NULL); /* safety belt */ in drm_minor_unregister()
226 drm_debugfs_cleanup(minor); in drm_minor_unregister()
230 * Looks up the given minor-ID and returns the respective DRM-minor object. The
234 * As long as you hold this minor, it is guaranteed that the object and the
235 * minor->dev pointer will stay valid! However, the device may get unplugged and
236 * unregistered while you hold the minor.
240 struct drm_minor *minor; in drm_minor_acquire() local
244 minor = idr_find(&drm_minors_idr, minor_id); in drm_minor_acquire()
245 if (minor) in drm_minor_acquire()
246 drm_dev_get(minor->dev); in drm_minor_acquire()
249 if (!minor) { in drm_minor_acquire()
251 } else if (drm_dev_is_unplugged(minor->dev)) { in drm_minor_acquire()
252 drm_dev_put(minor->dev); in drm_minor_acquire()
256 return minor; in drm_minor_acquire()
259 void drm_minor_release(struct drm_minor *minor) in drm_minor_release() argument
261 drm_dev_put(minor->dev); in drm_minor_release()
720 struct drm_minor *minor; in create_compat_control_link() local
727 minor = *drm_minor_get_slot(dev, DRM_MINOR_PRIMARY); in create_compat_control_link()
728 if (!minor) in create_compat_control_link()
740 name = kasprintf(GFP_KERNEL, "controlD%d", minor->index + 64); in create_compat_control_link()
744 ret = sysfs_create_link(minor->kdev->kobj.parent, in create_compat_control_link()
745 &minor->kdev->kobj, in create_compat_control_link()
755 struct drm_minor *minor; in remove_compat_control_link() local
761 minor = *drm_minor_get_slot(dev, DRM_MINOR_PRIMARY); in remove_compat_control_link()
762 if (!minor) in remove_compat_control_link()
765 name = kasprintf(GFP_KERNEL, "controlD%d", minor->index + 64); in remove_compat_control_link()
769 sysfs_remove_link(minor->kdev->kobj.parent, name); in remove_compat_control_link()
826 DRM_INFO("Initialized %s %d.%d.%d %s for %s on minor %d\n", in drm_dev_register()
827 driver->name, driver->major, driver->minor, in drm_dev_register()
916 * - DRM minor management
921 * interface registered on a DRM device, you can request minor numbers from DRM
924 * registered minor.
930 struct drm_minor *minor; in drm_stub_open() local
936 minor = drm_minor_acquire(iminor(inode)); in drm_stub_open()
937 if (IS_ERR(minor)) { in drm_stub_open()
938 err = PTR_ERR(minor); in drm_stub_open()
942 new_fops = fops_get(minor->dev->driver->fops); in drm_stub_open()
955 drm_minor_release(minor); in drm_stub_open()