Intel Extensible Firmware Interface Network Router User Manual


  Open as PDF
of 1084
 
Protocols USB Support
Version 1.10 12/01/02 14-11
TimeOut Indicates the maximum time, in milliseconds, which the transfer
is allowed to complete.
TransferResult A pointer to the detailed result information generated by this
control transfer. Refer to Section 2.5.1 of EFI1.1 USB Driver
Model, version 0.7.
Description
This function is used to submit a control transfer to a target USB device specified by
DeviceAddress. Control transfers are intended to support configuration/command/status type
communication flows between host and USB device.
There are three control transfer types according to the data phase. If the TransferDirection
parameter is EfiUsbNoData, Data is NULL, and DataLength is 0, then no data phase is
present in the control transfer. If the TransferDirection parameter is EfiUsbDataOut,
then Data specifies the data to be transmitted to the device, and DataLength specifies the
number of bytes to transfer to the device. In this case, there is an OUT DATA stage followed by a
SETUP stage. If the TransferDirection parameter is EfiUsbDataIn, then Data specifies
the data to be received from the device, and DataLength specifies the number of bytes to receive
from the device. In this case there is an IN DATA stage followed by a SETUP stage.
If the control transfer has completed successfully, then EFI_SUCCESS is returned. If the 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 error code will be returned in the TransferResult parameter.
EFI_INVALID_PARAMETER is returned if one of the following conditions is satisfied:
1. TransferDirection is invalid.
2. TransferDirection, Data, and DataLength do not match one of the three control
transfer types described above.
3. Request pointer is NULL.
4. MaximumPacketLength is not valid. If IsSlowDevice is TRUE, then
MaximumPacketLength must be 8. If IsSlowDevice is FALSE, then
MaximumPacketLength must be 8, 16, 32, or 64.
5. TransferResult pointer is NULL.