}
/**
- * usb_register - register a USB driver
+ * usb_register_driver - register a USB driver
* @new_driver: USB operations for the driver
+ * @owner: module owner of this driver.
*
* Registers a USB driver with the USB core. The list of unattached
* interfaces will be rescanned whenever a new driver is added, allowing
* usb_register_dev() to enable that functionality. This function no longer
* takes care of that.
*/
-int usb_register(struct usb_driver *new_driver)
+int usb_register_driver(struct usb_driver *new_driver, struct module *owner)
{
int retval = 0;
new_driver->driver.bus = &usb_bus_type;
new_driver->driver.probe = usb_probe_interface;
new_driver->driver.remove = usb_unbind_interface;
- new_driver->driver.owner = new_driver->owner;
+ new_driver->driver.owner = owner;
spin_lock_init(&new_driver->dynids.lock);
INIT_LIST_HEAD(&new_driver->dynids.list);
- usb_lock_all_devices();
retval = driver_register(&new_driver->driver);
- usb_unlock_all_devices();
if (!retval) {
pr_info("%s: registered new driver %s\n",
return retval;
}
-EXPORT_SYMBOL_GPL(usb_register);
+EXPORT_SYMBOL_GPL(usb_register_driver);
/**
* usb_deregister - unregister a USB driver
{
pr_info("%s: deregistering driver %s\n", usbcore_name, driver->name);
- usb_lock_all_devices();
usb_remove_newid_file(driver);
usb_free_dynids(driver);
driver_unregister(&driver->driver);
- usb_unlock_all_devices();
usbfs_update_special();
}