beautypg.com

Description, Status codes returned – Intel Extensible Firmware Interface User Manual

Page 560

background image

Extensible Firmware Interface Specification

14-20 12/01/02

Version

1.10

DataToggle

A pointer to the data toggle value. On input, it indicates the
initial data toggle value the synchronous interrupt transfer should
adopt; on output, it is updated to indicate the data toggle value of
the subsequent synchronous interrupt transfer.

TimeOut

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

TransferResult

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

Description

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

DeviceAddress

and

EndpointAddress

. In the

USB Specification, Revision 1.1, interrupt transfer is one of the four USB transfer types. In the

EFI_USB_HC_PROTOCOL

, interrupt transfer is divided further into synchronous interrupt transfer

and asynchronous interrupt transfer.

The synchronous interrupt transfer is designed to retrieve small amounts of data from a USB device
through an interrupt endpoint. A synchronous interrupt transfer is only executed once for each
request. This is the most significant difference from the asynchronous interrupt transfer.

If the synchronous interrupt transfer is successful, then

EFI_SUCCESS

is returned. If the 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 transfer direction indicated by

EndPointAddress

is not

EfiUsbDataIn

.

2.

Data

is

NULL

.

3.

DataLength

is 0.

4.

MaximumPacketLength

is not valid. The legal value of this parameter is for the full-speed

device, it should be 8, 16, 32, or 64; for the slow device, it is limited to 8.

5.

DataToggle

points to a value other than 0 and 1.

6.

TransferResult

is

NULL

.

Status Codes Returned

EFI_SUCCESS

The synchronous interrupt transfer was completed successfully.

EFI_OUT_OF_RESOURCES

The synchronous interrupt transfer could not be submitted due to lack of
resource.

EFI_INVALID_PARAMETER

Some parameters are invalid. The possible invalid parameters are
described in “Description” above.

EFI_TIMEOUT

The synchronous interrupt transfer failed due to timeout.

EFI_DEVICE_ERROR

The synchronous interrupt transfer failed due to host controller or device
error. Caller should check

TransferResult

for detailed error

information.