usb_disconnect — disconnect a device (usbcore-internal)
void usb_disconnect (
struct usb_device ** pdev)
;
Something got disconnected. Get rid of it and all of its children.
If *pdev is a normal device then the parent hub must already be locked. If *pdev is a root hub then this routine will acquire the usb_bus_list_lock on behalf of the caller.
Only hub drivers (including virtual root hub drivers for host controllers) should ever call this.
This call is synchronous, and may not be used in an interrupt context.