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

Advertising
background image

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.

Advertising