Intel Extensible Firmware Interface Network Router User Manual


  Open as PDF
of 1084
 
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
EFI_DRIVER_BINDING_PROTOCOL
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 Supported(), Start(),
and Stop()
.
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 EFI_USB_IO_PROTOCOL
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
SIMPLE_INPUT
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.