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

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
, 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.