Intel Extensible Firmware Interface Network Router User Manual


  Open as PDF
of 1084
 
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 endpoints 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 endpoints 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 hosts responsibility to track the bulk
endpoints 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.