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.