Provided by:
linux-doc-2.6.15_2.6.15-23.39_all 
NAME
usb_disconnect - disconnect a device (usbcore-internal)
SYNOPSIS
void usb_disconnect (struct usb_device ** pdev);
ARGUMENTS
pdev pointer to device being disconnected
CONTEXT
!in_interrupt ()
DESCRIPTION
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.