19.1 USB Host Controller Driver

The USB host controller driver depends on which USB host controller specification the host controller is based. Currently, the major types of USB host controllers are the following:

  • Open Host Controller Interface (OHCI) (USB 1.0 and USB 1.1)
  • Universal Host Controller Interface (UHCI) (USB 1.0 and USB 1.1)
  • Enhanced Host Controller Interface (EHCI) (USB 2.0)
  • Extended Host Controller Interface (XHCI) (USB 3.0)

The USB host controller driver is a device driver and follows the UEFI driver model. It typically consumes the services of EFI_PCI_IO_PROTOCOL and produces EFI_USB2_HC_PROTOCOL. The following section provides guidelines for implementing the EFI_DRIVER_BINDING_PROTOCOL services and EFI_USB2_HC_PROTOCOL services for the USB host controller driver. The EDK II provides UEFI Drivers that implement the EFI_USB_HC2_PROTOCOL for UHCI, ECHI, and XHCI in the MdeModulePkg in the following paths:

  • UHCI - MdeModulePkg/Bus/Pci/UhciDxe
  • EHCI - MdeModulePkg/Bus/Pci/EhciDxe
  • XHCI - MdeModulePkg/Bus/Pci/XhciDxe