4 usb device driver, 1 usb device driver entry point, 2 driver binding protocol for usb device drivers – Intel Extensible Firmware Interface User Manual
Page 577: 5 efi usb i/o protocol overview

Protocols
— USB Support
Version 1.10
12/01/02
14-37
14.2.4 USB Device Driver
A USB Device Driver manages a USB Controller and produces a device abstraction for use by a
preboot application.
14.2.4.1 USB Device Driver Entry Point
Like all other device drivers, the entry point for a USB Device Driver attaches
to image handle of the USB Device Driver.
14.2.4.2 Driver Binding Protocol for USB Device Drivers
The Driver Binding Protocol contains three services. These are
and
The
Supported()
tests to see if the USB Device Driver can manage a device handle. This
function checks to see if a controller can be managed by the USB Device Driver. This is done by
opening the
bus abstraction on the USB Controller handle, and using
the
EFI_USB_IO_PROTOCOL
services to determine if this USB Controller matches the profile
that the USB Device Driver is capable of managing.
The
Start()
function tells the USB Device Driver to start managing a USB Controller. It opens
the
EFI_USB_IO_PROTOCOL
instance from the handle for the USB Controller. This protocol
instance is used to perform USB packet transmission over the USB bus. For example, if the USB
controller is USB keyboard, then the USB keyboard driver would produce and install the
to the USB controller handle.
The
Stop()
function tells the USB Device Driver to stop managing a USB Controller. It removes
the I/O abstraction protocol instance previously installed in
Start()
from the USB controller
handle. It then closes the
EFI_USB_IO_PROTOCOL
.
14.2.5 EFI USB I/O Protocol Overview
This section provides a detailed description of the
EFI_USB_IO_PROTOCOL
. This protocol is
used by code, typically drivers, running in the EFI boot services environment to access USB
devices like USB keyboards, mice and mass storage devices. In particular, functions for managing
devices on USB buses are defined here.
The interfaces provided in the
EFI_USB_IO_PROTOCOL
are for performing basic operations
to access USB devices. Typically, USB devices are accessed through the four different transfers
types:
•
Controller Transfer:
Typically used to configure the USB device into an operation mode.
•
Interrupt Transfer:
Typically used to get periodic small amount of data, like USB
keyboard and mouse.
•
Bulk Transfer:
Typically used to transfer large amounts of data like reading blocks
from USB mass storage devices.
•
Isochronous Transfer: Typically used to transfer data at a fixed rate like voice data.
This protocol also provides mechanisms to manage and configure USB devices and controllers.