Lines Matching refs:minor

81  * device. However, this doesn't mean that the minor is active. Minors are
102 struct drm_minor *minor = data;
105 WARN_ON(dev != minor->dev);
107 put_device(minor->kdev);
109 if (minor->type == DRM_MINOR_ACCEL) {
110 accel_minor_remove(minor->index);
113 idr_remove(&drm_minors_idr, minor->index);
120 struct drm_minor *minor;
124 minor = drmm_kzalloc(dev, sizeof(*minor), GFP_KERNEL);
125 if (!minor)
128 minor->type = type;
129 minor->dev = dev;
148 minor->index = r;
150 r = drmm_add_action_or_reset(dev, drm_minor_alloc_release, minor);
154 minor->kdev = drm_sysfs_minor_alloc(minor);
155 if (IS_ERR(minor->kdev))
156 return PTR_ERR(minor->kdev);
158 *drm_minor_get_slot(dev, type) = minor;
164 struct drm_minor *minor;
170 minor = *drm_minor_get_slot(dev, type);
171 if (!minor)
174 if (minor->type != DRM_MINOR_ACCEL) {
175 ret = drm_debugfs_register(minor, minor->index,
183 ret = device_add(minor->kdev);
187 /* replace NULL with @minor so lookups will succeed from now on */
188 if (minor->type == DRM_MINOR_ACCEL) {
189 accel_minor_replace(minor, minor->index);
192 idr_replace(&drm_minors_idr, minor, minor->index);
196 DRM_DEBUG("new minor registered %d\n", minor->index);
200 drm_debugfs_unregister(minor);
206 struct drm_minor *minor;
209 minor = *drm_minor_get_slot(dev, type);
210 if (!minor || !device_is_registered(minor->kdev))
213 /* replace @minor with NULL so lookups will fail from now on */
214 if (minor->type == DRM_MINOR_ACCEL) {
215 accel_minor_replace(NULL, minor->index);
218 idr_replace(&drm_minors_idr, NULL, minor->index);
222 device_del(minor->kdev);
223 dev_set_drvdata(minor->kdev, NULL); /* safety belt */
224 drm_debugfs_unregister(minor);
228 * Looks up the given minor-ID and returns the respective DRM-minor object. The
232 * As long as you hold this minor, it is guaranteed that the object and the
233 * minor->dev pointer will stay valid! However, the device may get unplugged and
234 * unregistered while you hold the minor.
238 struct drm_minor *minor;
242 minor = idr_find(&drm_minors_idr, minor_id);
243 if (minor)
244 drm_dev_get(minor->dev);
247 if (!minor) {
249 } else if (drm_dev_is_unplugged(minor->dev)) {
250 drm_dev_put(minor->dev);
254 return minor;
257 void drm_minor_release(struct drm_minor *minor)
259 drm_dev_put(minor->dev);
825 struct drm_minor *minor;
832 minor = *drm_minor_get_slot(dev, DRM_MINOR_PRIMARY);
833 if (!minor)
845 name = kasprintf(GFP_KERNEL, "controlD%d", minor->index + 64);
849 ret = sysfs_create_link(minor->kdev->kobj.parent,
850 &minor->kdev->kobj,
860 struct drm_minor *minor;
866 minor = *drm_minor_get_slot(dev, DRM_MINOR_PRIMARY);
867 if (!minor)
870 name = kasprintf(GFP_KERNEL, "controlD%d", minor->index + 64);
874 sysfs_remove_link(minor->kdev->kobj.parent, name);
947 DRM_INFO("Initialized %s %d.%d.%d %s for %s on minor %d\n",
948 driver->name, driver->major, driver->minor,
1015 * - DRM minor management
1020 * interface registered on a DRM device, you can request minor numbers from DRM
1023 * registered minor.
1029 struct drm_minor *minor;
1034 minor = drm_minor_acquire(iminor(inode));
1035 if (IS_ERR(minor))
1036 return PTR_ERR(minor);
1038 new_fops = fops_get(minor->dev->driver->fops);
1051 drm_minor_release(minor);