Responsibilities of the USB Protocol Device Driver

The USB Protocol driver (USBD) has no hardware that is associated with it. It is configured by rule during system start.

During its configuration, the USB Protocol driver adds its functions to the kernel device switch table. This step provides support for USB configuration methods to register the host controllers that are present in the system. It allows USB client drivers to register callback routines for device connect and disconnect events. It also provides USB client drivers with the uniform pipe-oriented call vectors that allow the client drivers to connect to the device endpoints and perform I/O operation.

During its operation, the USB protocol driver is responsible for following the USB topology behind each registered host controller to detect the USB devices and enumerating them. It reads the descriptors of each detected device during enumeration and initializes the internal data structures. It also handles Power Budgeting of each USB hub that is detected during the enumeration. It provides an interface to USB client driver to support the various transfer types that includes control, bulk, interrupt, and isochronous through pipe interfaces.