aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Herrmann <dh.herrmann@gmail.com>2014-01-29 06:57:05 -0500
committerDavid Herrmann <dh.herrmann@gmail.com>2014-03-16 07:25:18 -0400
commitafcdbc867460b7ee4119bf4904e60f0e171c6dfb (patch)
treea467a391c5dea20bbdcdde74921cbe938dfa1819
parentbd9dfa98187f6cb671e60d9df0801378e8a99ad9 (diff)
drm: rename drm_unplug/get_minor() to drm_minor_register/unregister()
drm_get_minor() no longer allocates objects, and drm_unplug_minor() is now the exact reverse of it. Rename it to _register/unregister() so their name actually says what they do. Furthermore, remove the direct minor-ptr and instead pass the minor-type. This way we know the actual slot of the minor and can reset it if required. Signed-off-by: David Herrmann <dh.herrmann@gmail.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/drm_stub.c54
1 files changed, 17 insertions, 37 deletions
diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
index e46c0904a706..488600013e35 100644
--- a/drivers/gpu/drm/drm_stub.c
+++ b/drivers/gpu/drm/drm_stub.c
@@ -302,18 +302,7 @@ static void drm_minor_free(struct drm_device *dev, unsigned int type)
302 } 302 }
303} 303}
304 304
305/** 305static int drm_minor_register(struct drm_device *dev, unsigned int type)
306 * drm_get_minor - Register DRM minor
307 * @dev: DRM device
308 * @type: Type of minor
309 *
310 * Register minor of given type.
311 * Caller must hold the global DRM mutex.
312 *
313 * RETURNS:
314 * 0 on success, negative error code on failure.
315 */
316static int drm_get_minor(struct drm_device *dev, unsigned int type)
317{ 306{
318 struct drm_minor *new_minor; 307 struct drm_minor *new_minor;
319 int ret; 308 int ret;
@@ -362,18 +351,11 @@ err_mem:
362 return ret; 351 return ret;
363} 352}
364 353
365/** 354static void drm_minor_unregister(struct drm_device *dev, unsigned int type)
366 * drm_unplug_minor - Unplug DRM minor
367 * @minor: Minor to unplug
368 *
369 * Unplugs the given DRM minor but keeps the object. So after this returns,
370 * minor->dev is still valid so existing open-files can still access it to get
371 * device information from their drm_file ojects.
372 * If the minor is already unplugged or if @minor is NULL, nothing is done.
373 * The global DRM mutex must be held by the caller.
374 */
375static void drm_unplug_minor(struct drm_minor *minor)
376{ 355{
356 struct drm_minor *minor;
357
358 minor = *drm_minor_get_slot(dev, type);
377 if (!minor || !minor->kdev) 359 if (!minor || !minor->kdev)
378 return; 360 return;
379 361
@@ -448,11 +430,9 @@ EXPORT_SYMBOL(drm_put_dev);
448void drm_unplug_dev(struct drm_device *dev) 430void drm_unplug_dev(struct drm_device *dev)
449{ 431{
450 /* for a USB device */ 432 /* for a USB device */
451 if (drm_core_check_feature(dev, DRIVER_MODESET)) 433 drm_minor_unregister(dev, DRM_MINOR_LEGACY);
452 drm_unplug_minor(dev->control); 434 drm_minor_unregister(dev, DRM_MINOR_RENDER);
453 if (dev->render) 435 drm_minor_unregister(dev, DRM_MINOR_CONTROL);
454 drm_unplug_minor(dev->render);
455 drm_unplug_minor(dev->primary);
456 436
457 mutex_lock(&drm_global_mutex); 437 mutex_lock(&drm_global_mutex);
458 438
@@ -623,15 +603,15 @@ int drm_dev_register(struct drm_device *dev, unsigned long flags)
623 603
624 mutex_lock(&drm_global_mutex); 604 mutex_lock(&drm_global_mutex);
625 605
626 ret = drm_get_minor(dev, DRM_MINOR_CONTROL); 606 ret = drm_minor_register(dev, DRM_MINOR_CONTROL);
627 if (ret) 607 if (ret)
628 goto err_minors; 608 goto err_minors;
629 609
630 ret = drm_get_minor(dev, DRM_MINOR_RENDER); 610 ret = drm_minor_register(dev, DRM_MINOR_RENDER);
631 if (ret) 611 if (ret)
632 goto err_minors; 612 goto err_minors;
633 613
634 ret = drm_get_minor(dev, DRM_MINOR_LEGACY); 614 ret = drm_minor_register(dev, DRM_MINOR_LEGACY);
635 if (ret) 615 if (ret)
636 goto err_minors; 616 goto err_minors;
637 617
@@ -656,9 +636,9 @@ err_unload:
656 if (dev->driver->unload) 636 if (dev->driver->unload)
657 dev->driver->unload(dev); 637 dev->driver->unload(dev);
658err_minors: 638err_minors:
659 drm_unplug_minor(dev->control); 639 drm_minor_unregister(dev, DRM_MINOR_LEGACY);
660 drm_unplug_minor(dev->render); 640 drm_minor_unregister(dev, DRM_MINOR_RENDER);
661 drm_unplug_minor(dev->primary); 641 drm_minor_unregister(dev, DRM_MINOR_CONTROL);
662out_unlock: 642out_unlock:
663 mutex_unlock(&drm_global_mutex); 643 mutex_unlock(&drm_global_mutex);
664 return ret; 644 return ret;
@@ -690,8 +670,8 @@ void drm_dev_unregister(struct drm_device *dev)
690 list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head) 670 list_for_each_entry_safe(r_list, list_temp, &dev->maplist, head)
691 drm_rmmap(dev, r_list->map); 671 drm_rmmap(dev, r_list->map);
692 672
693 drm_unplug_minor(dev->control); 673 drm_minor_unregister(dev, DRM_MINOR_LEGACY);
694 drm_unplug_minor(dev->render); 674 drm_minor_unregister(dev, DRM_MINOR_RENDER);
695 drm_unplug_minor(dev->primary); 675 drm_minor_unregister(dev, DRM_MINOR_CONTROL);
696} 676}
697EXPORT_SYMBOL(drm_dev_unregister); 677EXPORT_SYMBOL(drm_dev_unregister);