Product manual

Spinpoint M9TU-USB 3.0 Product Manual REV 1.0
81
USB INTERFACE AND USB COMMANDS
6.4.4.3 Valid and Meaningful CSW
The device generally communicates the results of its attempt to satisfy the host’s request through the CSW. The
host performs two verifications on every CSW received. First, the host verifies that what was received is a valid
CSW Next, the host determines if the data within the CSW is meaningful.
Valid CSW
The host shall consider the CSW valid when:
the CSW is 13 (Dh) bytes in length,
and the dCSWSignature is equal to 53425355h,
the dCSWTag matches the dCBWTag from the corresponding CBW.
Meaningful CSW
The host shall consider the contents of the CSW meaningful when:
either the bCSWStatus value is 00h or 01h and the dCSWDataResidue is less than or equal to
dCBWDataTransferLength..
or the bCSWStatus value is 02h.
6.4.4.4 Device Error Handling
The device may not be able to fully satisfy the host's request. At the point when the device discovers that it
cannot fully satisfy the request, there may be a Data-In or Data-Out transfer in progress on the bus, and the host
may have other pending requests. The device may cause the host to terminate such transfers by STALLing the
appropriate pipe.
The response of a device to a CBW that is not meaningful is not specified.
Please note that whether or not a STALL handshake actually appears on the bus depends on whether or not there
is a transfer in progress at the point in time when the device is ready to STALL the pipe.
6.4.4.5 Host Error Handling
If the host receives a CSW which is not valid, then the host shall perform a Reset Recovery. If the host receives
a CSW which is not meaningful, then the host may perform a Reset Recovery.
6.4.4.6 Error Classes
In every transaction between the host and the device, there are four possible classes of errors. These classes are
not always independent of each other and may occur at any time during the transaction.
6.4.4.6.1 CBW Not Valid
If the CBW is not valid, the device shall STALL the Bulk-In pipe. Also, the device shall either STALL the
Bulk-Out pipe, or the device shall accept and discard any Bulk-Out data. The device shall maintain this state until
a Reset Recovery.
6.4.4.6.2 Internal Device Error
The device may detect an internal error for which it has no reliable means of recovery other than a reset. The
device shall respond to such conditions by:
either STALLing any data transfer in progress and returning a Phase Error status (bCSWStatus = 02h).
or STALLing all further requests on the Bulk-In and the Bulk-Out pipes until a Reset Recovery.
6.4.4.6.3 Host/Device Disagreements
After recognizing that a CBW is valid and meaningful, and in the absence of internal errors, the device may
detect a condition where it cannot meet the host’s expectation for data transfer, as indicated by the Direction bit
of the bmCBWFlags field and the dCBWDataTransferLength field of the CBW. In some of these cases, the
device may require a reset to recover. In these cases, the device shall return Phase Error status (bCSWStatus =
02h).
6.4.4.6.4 Command Failure
After recognizing that a CBW is valid and meaningful, the device may still fail in its attempt to satisfy the
command. The device shall report this condition by returning a Command Failed status (bCSWStatus = 01h).