Lines Matching defs:minor

82  * device. However, this doesn't mean that the minor is active. Minors are
103 struct drm_minor *minor = data;
106 WARN_ON(dev != minor->dev);
108 put_device(minor->kdev);
110 if (minor->type == DRM_MINOR_ACCEL) {
111 accel_minor_remove(minor->index);
114 idr_remove(&drm_minors_idr, minor->index);
121 struct drm_minor *minor;
125 minor = drmm_kzalloc(dev, sizeof(*minor), GFP_KERNEL);
126 if (!minor)
129 minor->type = type;
130 minor->dev = dev;
149 minor->index = r;
151 r = drmm_add_action_or_reset(dev, drm_minor_alloc_release, minor);
155 minor->kdev = drm_sysfs_minor_alloc(minor);
156 if (IS_ERR(minor->kdev))
157 return PTR_ERR(minor->kdev);
159 *drm_minor_get_slot(dev, type) = minor;
165 struct drm_minor *minor;
171 minor = *drm_minor_get_slot(dev, type);
172 if (!minor)
175 if (minor->type != DRM_MINOR_ACCEL) {
176 ret = drm_debugfs_register(minor, minor->index,
184 ret = device_add(minor->kdev);
188 /* replace NULL with @minor so lookups will succeed from now on */
189 if (minor->type == DRM_MINOR_ACCEL) {
190 accel_minor_replace(minor, minor->index);
193 idr_replace(&drm_minors_idr, minor, minor->index);
197 DRM_DEBUG("new minor registered %d\n", minor->index);
201 drm_debugfs_unregister(minor);
207 struct drm_minor *minor;
210 minor = *drm_minor_get_slot(dev, type);
211 if (!minor || !device_is_registered(minor->kdev))
214 /* replace @minor with NULL so lookups will fail from now on */
215 if (minor->type == DRM_MINOR_ACCEL) {
216 accel_minor_replace(NULL, minor->index);
219 idr_replace(&drm_minors_idr, NULL, minor->index);
223 device_del(minor->kdev);
224 dev_set_drvdata(minor->kdev, NULL); /* safety belt */
225 drm_debugfs_unregister(minor);
229 * Looks up the given minor-ID and returns the respective DRM-minor object. The
233 * As long as you hold this minor, it is guaranteed that the object and the
234 * minor->dev pointer will stay valid! However, the device may get unplugged and
235 * unregistered while you hold the minor.
239 struct drm_minor *minor;
243 minor = idr_find(&drm_minors_idr, minor_id);
244 if (minor)
245 drm_dev_get(minor->dev);
248 if (!minor) {
250 } else if (drm_dev_is_unplugged(minor->dev)) {
251 drm_dev_put(minor->dev);
255 return minor;
258 void drm_minor_release(struct drm_minor *minor)
260 drm_dev_put(minor->dev);
827 struct drm_minor *minor;
834 minor = *drm_minor_get_slot(dev, DRM_MINOR_PRIMARY);
835 if (!minor)
847 name = kasprintf(GFP_KERNEL, "controlD%d", minor->index + 64);
851 ret = sysfs_create_link(minor->kdev->kobj.parent,
852 &minor->kdev->kobj,
862 struct drm_minor *minor;
868 minor = *drm_minor_get_slot(dev, DRM_MINOR_PRIMARY);
869 if (!minor)
872 name = kasprintf(GFP_KERNEL, "controlD%d", minor->index + 64);
876 sysfs_remove_link(minor->kdev->kobj.parent, name);
950 DRM_INFO("Initialized %s %d.%d.%d %s for %s on minor %d\n",
951 driver->name, driver->major, driver->minor,
1020 * - DRM minor management
1025 * interface registered on a DRM device, you can request minor numbers from DRM
1028 * registered minor.
1034 struct drm_minor *minor;
1039 minor = drm_minor_acquire(iminor(inode));
1040 if (IS_ERR(minor))
1041 return PTR_ERR(minor);
1043 new_fops = fops_get(minor->dev->driver->fops);
1056 drm_minor_release(minor);