USB: remove CONFIG_USB_DEVICE_CLASS
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 25 Apr 2012 22:26:54 +0000 (15:26 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 30 Apr 2012 02:29:57 +0000 (22:29 -0400)
This option has been deprecated for many years now, and no userspace
tools use it anymore, so it should be safe to finally remove it.

Reported-by: Kay Sievers <kay@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/core/Kconfig
drivers/usb/core/devio.c
include/linux/usb.h

index 751031e8d8d221ee571e05a29a19abc4b1103f48..fe46fc09defca9f4901a7211072b01ef2a212262 100644 (file)
@@ -27,29 +27,6 @@ config USB_ANNOUNCE_NEW_DEVICES
 comment "Miscellaneous USB options"
        depends on USB
 
-config USB_DEVICE_CLASS
-       bool "USB device class-devices (DEPRECATED)"
-       depends on USB
-       default y
-       ---help---
-         Userspace access to USB devices is granted by device-nodes exported
-         directly from the usbdev in sysfs. Old versions of the driver
-         core and udev needed additional class devices to export device nodes.
-
-         These additional devices are difficult to handle in userspace, if
-         information about USB interfaces must be available. One device
-         contains the device node, the other device contains the interface
-         data. Both devices are at the same level in sysfs (siblings) and one
-         can't access the other. The device node created directly by the
-         usb device is the parent device of the interface and therefore
-         easily accessible from the interface event.
-
-         This option provides backward compatibility for libusb device
-         nodes (lsusb) when usbfs is not used, and the following udev rule
-         doesn't exist:
-           SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", \
-           NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", MODE="0644"
-
 config USB_DYNAMIC_MINORS
        bool "Dynamic USB minor allocation"
        depends on USB
index 90db6e2a573fcbdd8b2b55c227210f8852b90926..c4a1af8a954b84cc3a38ec62e2d3a6e0ecb82a1f 100644 (file)
@@ -2051,44 +2051,13 @@ static void usbdev_remove(struct usb_device *udev)
        }
 }
 
-#ifdef CONFIG_USB_DEVICE_CLASS
-static struct class *usb_classdev_class;
-
-static int usb_classdev_add(struct usb_device *dev)
-{
-       struct device *cldev;
-
-       cldev = device_create(usb_classdev_class, &dev->dev, dev->dev.devt,
-                             NULL, "usbdev%d.%d", dev->bus->busnum,
-                             dev->devnum);
-       if (IS_ERR(cldev))
-               return PTR_ERR(cldev);
-       dev->usb_classdev = cldev;
-       return 0;
-}
-
-static void usb_classdev_remove(struct usb_device *dev)
-{
-       if (dev->usb_classdev)
-               device_unregister(dev->usb_classdev);
-}
-
-#else
-#define usb_classdev_add(dev)          0
-#define usb_classdev_remove(dev)       do {} while (0)
-
-#endif
-
 static int usbdev_notify(struct notifier_block *self,
                               unsigned long action, void *dev)
 {
        switch (action) {
        case USB_DEVICE_ADD:
-               if (usb_classdev_add(dev))
-                       return NOTIFY_BAD;
                break;
        case USB_DEVICE_REMOVE:
-               usb_classdev_remove(dev);
                usbdev_remove(dev);
                break;
        }
@@ -2118,21 +2087,6 @@ int __init usb_devio_init(void)
                       USB_DEVICE_MAJOR);
                goto error_cdev;
        }
-#ifdef CONFIG_USB_DEVICE_CLASS
-       usb_classdev_class = class_create(THIS_MODULE, "usb_device");
-       if (IS_ERR(usb_classdev_class)) {
-               printk(KERN_ERR "Unable to register usb_device class\n");
-               retval = PTR_ERR(usb_classdev_class);
-               cdev_del(&usb_device_cdev);
-               usb_classdev_class = NULL;
-               goto out;
-       }
-       /* devices of this class shadow the major:minor of their parent
-        * device, so clear ->dev_kobj to prevent adding duplicate entries
-        * to /sys/dev
-        */
-       usb_classdev_class->dev_kobj = NULL;
-#endif
        usb_register_notify(&usbdev_nb);
 out:
        return retval;
@@ -2145,9 +2099,6 @@ error_cdev:
 void usb_devio_cleanup(void)
 {
        usb_unregister_notify(&usbdev_nb);
-#ifdef CONFIG_USB_DEVICE_CLASS
-       class_destroy(usb_classdev_class);
-#endif
        cdev_del(&usb_device_cdev);
        unregister_chrdev_region(USB_DEVICE_DEV, USB_DEVICE_MAX);
 }
index a63c5baa9f65f775523a2c603bdb0182b28a2601..8fa9a93a4ec4d9458d400a49e876a56fca3b1b85 100644 (file)
@@ -489,9 +489,6 @@ struct usb_device {
        char *serial;
 
        struct list_head filelist;
-#ifdef CONFIG_USB_DEVICE_CLASS
-       struct device *usb_classdev;
-#endif
 
        int maxchild;
        struct usb_device **children;