Information

Universal Serial Bus Interface
MPC8308 PowerQUICC II Pro Processor Reference Manual, Rev. 1
Freescale Semiconductor 13-109
Software must ensure that for a single full-speed isochronous endpoint, there is never a start-split
and complete-split in H-Frame, microframe 1. This is mandated as a rule so that case 2a and case
2b can be discriminated. According to the core USB specification, the long isochronous transaction
illustrated in Case 2b, could be scheduled so that the start-split was in microframe 1 of H-Frame N
and the last complete-split would need to occur in microframe 1 of H-Frame N+1. However, it is
impossible to discriminate between cases 2a and case 2b, which has significant impact on the
complexity of the host controller.
13.6.12.3.2 Tracking Split Transaction Progress for Isochronous Transfers
Isochronous endpoints do not employ the concept of a halt on error, however the host controller does
identify and report per-packet errors observed in the data stream. This includes schedule traversal
problems (skipped microframes), timeouts and corrupted data received.
In similar kind to interrupt split-transactions, the portions of the split transaction protocol must execute in
the microframes they are scheduled. The queue head data structure used to manage full- and low-speed
interrupt has several mechanisms for tracking when portions of a transaction have occurred. Isochronous
transfers use siTDs for their transfers and the data structures are only reachable using the schedule in the
exact microframe in which they are required (so all the mechanism employed for tracking in queue heads
is not required for siTDs). Software has the option of reusing siTD several times in the complete periodic
schedule. However, it must ensure that the results of split transaction N are consumed and the siTD
re-initialized (activated) before the host controller gets back to the siTD (in a future microframe).
Split-transaction isochronous OUTs utilize a low-level protocol to indicate which portions of the split
transaction data have arrived. Control over the low-level protocol is exposed in an siTD using the fields
Transaction Position (TP) and Transaction Count (T-count). If the entire data payload for the OUT split
transaction is larger than 188 bytes, there will be more than one start-split transaction, each of which
require proper annotation. If host hold-offs occur, then the sequence of annotations received from the host
will not be complete, which is detected and handled by the transaction translator. See Section 13.6.12.3.1,
“Split Transaction Scheduling Mechanisms for Isochronous,” for a description on how these fields are
used during a sequence of start-split transactions.
The fields siTD[T-Count] and siTD[TP] are used by the host controller to drive and sequence the
transaction position annotations. It is the responsibility of system software to properly initialize these
fields in each siTD. Once the budget for a split-transaction isochronous endpoint is established, S-mask,
T-Count, and TP initialization values for all the siTD associated with the endpoint are constant. They
remain constant until the budget for the endpoint is recalculated by software and the periodic schedule
adjusted.
For IN-endpoints, the transaction translator simply annotates the response data packets with enough
information to allow the host controller to identify the last data. As with split transaction Interrupt, it is the
host controller's responsibility to detect when it has missed an opportunity to execute a complete-split. The
following field in the siTD is used to track and detect errors in the execution of a split transaction for an
IN isochronous endpoint.
C-prog-mask. This is an eight-bit bit-vector where the host controller keeps track of which
complete-splits have been executed. Due to the nature of the transaction translator periodic
pipeline, the complete-splits need to be executed in-order
. The host controller needs to detect when