Usage Notes and Known Design Exceptions to Functional Specifications
Advisory 1.0.13
USB: Data May be Lost When USB Subsystem is Operating in DMA Mode and
More Than One Endpoint is Transferring Data
Revisions Affected
1.0
Details
Data loss may occur due to a USB data toggle synchronization error that occurs when
an internal data toggle counter is erroneously reset from the DATA1 state to the DATA0
state while the USB subsystem is actively receiving data from more than one endpoint.
The erroneous reset of the data toggle counter occurs because the associated logic in
the USB subsystem DMA contains an error that does not support the correct data toggle
update with data transfers from multiple endpoints.
If the DATA1 state is erroneously reset to the DATA0 state immediately following a USB
transaction in which the PID is DATA0, the transmitter and receiver become de-
synchronized. This data toggle synchronization error causes the receiver, per the USB
specification, to silently discard the non-synchronized packet, which causes the packet
and any data contain therein to be lost.
NOTE:
For more information related to the definition of DATA0 and DATA1 PIDs
and functional requirements of data toggle synchronization, see sections
8.4.4 and 8.6 of the
Universal Serial Bus Specification Revision 2.0
.
Workarounds
•
Operating in USB host mode - The workaround involves detecting and correcting the
data toggle mismatch by software after receiving each USB packet. In order to
implement this workaround, the CPPI4.1 DMA must be configured to operate in
transparent mode; generic RNDIS mode cannot be used. Software must save the
previous data toggle value then compare the current data toggle value and the saved
value to detect a data toggle mismatch. If a synchronization error is detected, it must
be corrected by simultaneously writing 1b to the data toggle write enable and data
toggle bits in the respective RxCSR registers.
•
Operating in USB device mode - There is no workaround for this mode of operation.
19
SPRZ360F – October 2011 – Revised November 2013
Sitara™ AM335x ARM
®
Cortex™-A8 Microprocessors (MPUs) (Silicon
Revision 2.1, 2.0, 1.0)
Copyright © 2011–2013, Texas Instruments Incorporated