|
@@ -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);
|
|
|
}
|