Lines Matching defs:minor
143 * device. However, this doesn't mean that the minor is active. Minors are
176 struct drm_minor *minor = data;
178 WARN_ON(dev != minor->dev);
181 put_device(minor->kdev);
184 xa_erase(drm_minor_get_xa(minor->type), minor->index);
189 * minor allocation scheme where minors 0-63 are primary nodes, 64-127 are control nodes,
203 struct drm_minor *minor;
206 minor = drmm_kzalloc(dev, sizeof(*minor), GFP_KERNEL);
207 if (!minor)
210 minor->type = type;
211 minor->dev = dev;
213 r = xa_alloc(drm_minor_get_xa(type), &minor->index,
216 r = xa_alloc(&drm_minors_xa, &minor->index,
221 r = drmm_add_action_or_reset(dev, drm_minor_alloc_release, minor);
226 minor->kdev = drm_sysfs_minor_alloc(minor);
227 if (IS_ERR(minor->kdev))
228 return PTR_ERR(minor->kdev);
231 *drm_minor_get_slot(dev, type) = minor;
237 struct drm_minor *minor;
243 minor = *drm_minor_get_slot(dev, type);
244 if (!minor)
248 if (minor->type == DRM_MINOR_ACCEL) {
249 accel_debugfs_init(minor, minor->index);
251 ret = drm_debugfs_init(minor, minor->index, drm_debugfs_root);
258 ret = device_add(minor->kdev);
265 /* replace NULL with @minor so lookups will succeed from now on */
266 entry = xa_store(drm_minor_get_xa(type), minor->index, minor, GFP_KERNEL);
273 DRM_DEBUG("new minor registered %d\n", minor->index);
278 drm_debugfs_cleanup(minor);
285 struct drm_minor *minor;
287 minor = *drm_minor_get_slot(dev, type);
289 if (!minor || !device_is_registered(minor->kdev))
291 if (!minor)
295 /* replace @minor with NULL so lookups will fail from now on */
296 xa_store(drm_minor_get_xa(type), minor->index, NULL, GFP_KERNEL);
299 device_del(minor->kdev);
301 dev_set_drvdata(minor->kdev, NULL); /* safety belt */
302 drm_debugfs_cleanup(minor);
306 * Looks up the given minor-ID and returns the respective DRM-minor object. The
310 * As long as you hold this minor, it is guaranteed that the object and the
311 * minor->dev pointer will stay valid! However, the device may get unplugged and
312 * unregistered while you hold the minor.
316 struct drm_minor *minor;
319 minor = xa_load(minor_xa, minor_id);
320 if (minor)
321 drm_dev_get(minor->dev);
324 if (!minor) {
326 } else if (drm_dev_is_unplugged(minor->dev)) {
327 drm_dev_put(minor->dev);
331 return minor;
334 void drm_minor_release(struct drm_minor *minor)
336 drm_dev_put(minor->dev);
931 struct drm_minor *minor;
938 minor = *drm_minor_get_slot(dev, DRM_MINOR_PRIMARY);
939 if (!minor)
951 name = kasprintf(GFP_KERNEL, "controlD%d", minor->index + 64);
955 ret = sysfs_create_link(minor->kdev->kobj.parent,
956 &minor->kdev->kobj,
966 struct drm_minor *minor;
972 minor = *drm_minor_get_slot(dev, DRM_MINOR_PRIMARY);
973 if (!minor)
976 name = kasprintf(GFP_KERNEL, "controlD%d", minor->index + 64);
980 sysfs_remove_link(minor->kdev->kobj.parent, name);
1048 DRM_INFO("Initialized %s %d.%d.%d %s for %s on minor %d\n",
1049 driver->name, driver->major, driver->minor,
1121 * - DRM minor management
1126 * interface registered on a DRM device, you can request minor numbers from DRM
1129 * registered minor.
1136 struct drm_minor *minor;
1141 minor = drm_minor_acquire(&drm_minors_xa, iminor(inode));
1142 if (IS_ERR(minor))
1143 return PTR_ERR(minor);
1145 new_fops = fops_get(minor->dev->driver->fops);
1158 drm_minor_release(minor);
1607 drm_find_file_by_minor(struct drm_device *dev, int minor)
1611 key.fminor = minor;
1618 int unit = minor(kdev) & ((1 << CLONE_SHIFT) - 1);
1670 mtx_enter(&file_priv->minor->dev->event_lock);
1673 mtx_leave(&file_priv->minor->dev->event_lock);
1705 file_priv = drm_find_file_by_minor(dev, minor(kdev));
1757 dminor = minor(kdev);
1773 dm->index = minor(kdev);
1789 file_priv->fminor = minor(kdev);
1831 file_priv = drm_find_file_by_minor(dev, minor(kdev));
1864 file_priv = drm_find_file_by_minor(dev, minor(kdev));