This function is used to register a new USB device driver at the subsystem. The argument drv points to a completely initialized usb_driver (see figure 4) structure. On success 0 is returned otherwise an error value is returned.
This function deregisters a formerly registerd USB device driver at the subsystem.
This function is intended to be used by USB device drivers that need to claim more than one interface on a device at once when probing. The argument driver points to a completely initialized usb_driver structure. The iface argument points to a usb_interface structure which is part of the usb_config_descriptor which is accesible from the usb_device structure (given in the probe function). The drv_context pointer normally references the device driver's context structure (see return value of the probe function).
This function is used to check if another device driver already has claimed the specified interface. The return value is 0 if the interface was not claimed by any driver.
If a driver wants to release a previously claimed interface it has to call this function. In the disconnect function you do not have to release any interfaces that were additionally claimed in the probe function.