Intel Extensible Firmware Interface User Manual

Page 554

Advertising
background image

Extensible Firmware Interface Specification

14-14 12/01/02

Version

1.10

TimeOut

Indicates the maximum time, in milliseconds, which the transfer
is allowed to complete.

TransferResult

A pointer to the detailed result information of the bulk transfer.
Refer to Section 2.5.1 of EFI1.1 USB Driver Model, version 0.7.

Description

This function is used to submit bulk transfer to a target endpoint of a USB device. The target
endpoint is specified by

DeviceAddress

and

EndpointAddress

. Bulk transfers are

designed to support devices that need to communicate relatively large amounts of data at highly
variable times where the transfer can use any available bandwidth. Bulk transfers can be used only
by full-speed devices.

The data transfer direction is determined by the endpoint direction that is encoded in the

EndPointAddress

parameter. Please refer to USB Specification, Revision 1.1 on the Endpoint

Address encoding.

The

DataToggle

parameter is used to track target endpoint’s data sequence toggle bits. The

USB provides a mechanism to guarantee data packet synchronization between data transmitter and
receiver across multiple transactions. The data packet synchronization is achieved with the data
sequence toggle bits and the DATA0/DATA1 PIDs. A bulk endpoint’s toggle sequence is
initialized to DATA0 when the endpoint experiences a configuration event. It toggles between
DATA0 and DATA1 in each successive data transfer. It is host’s responsibility to track the bulk
endpoint’s data toggle sequence and set the correct value for each data packet. The input

DataToggle

value points to the data toggle value for the first data packet of this bulk transfer;

the output

DataToggle

value points to the data toggle value for the last successfully transferred

data packet of this bulk transfer. The caller should record the data toggle value for use in
subsequent bulk transfers to the same endpoint.

If the bulk transfer is successful, then

EFI_SUCCESS

is returned. If USB transfer cannot be

completed within the timeout specified by

Timeout

, then

EFI_TIMEOUT

is returned. If an error

other than timeout occurs during the USB transfer, then

EFI_DEVICE_ERROR

is returned and the

detailed status code is returned in

TransferResult

.

EFI_INVALID_PARAMETER

is returned if one of the following conditions is satisfied:

1.

Data

is

NULL

.

2.

DataLength

is 0.

3.

MaximumPacketLength

is not valid. The legal value of this parameter is 8, 16, 32, or 64.

4.

DataToggle

points to a value other than 0 and 1.

5.

TransferResult

is

NULL

.

Advertising