19.2 USB Bus Driver
EDK II contains a generic USB bus driver. This driver uses the services of
EFI_USB2_HC_PROTOCOL
to enumerate USB devices and produce child handles with
EFI_DEVICE_PATH_PROTOCOL
and EFI_USB_IO_PROTOCOL
. The implementation of the
USB Bus Driver is found in the MdeModulePkg
in the directory
MdeModulePkg/Bus/Usb/UsbBusDxe
A USB hub, including the USB root hub and common hub, is a type of USB device. The USB bus driver is responsible for the management of all USB hub devices. No USB device drivers are required for USB hub devices.
If UEFI-based system firmware is ported to a new platform, most of the USB-related changes occur in the implementation of the USB host controller driver. If new types of USB devices are introduced that provide console or UEFI boot capabilities, the implementation of new USB Device Drivers is also required.
The USB bus driver is designed to be a generic, platform-agnostic driver. As a
result, customizing the USB bus driver is strongly discouraged
. The detailed
design and implementation of the USB bus driver is not covered in this guide.