Universal Serial Bus InterfaceMCF5253 Reference Manual, Rev. 1Freescale Semiconductor 24-8924.9.12 Split TransactionsUSB 2.0 defines extensions to the bus protocol for managing USB 1.x data streams through USB 2.0 hubs.This section describes how the host controller uses the interface data structures to manage data streamswith full- and low-speed devices, connected below a USB 2.0 hub, utilizing the split transaction protocol.Refer to the USB 2.0 Specification for the complete definition of the split transaction protocol. Full- andlow-speed devices are enumerated identically as high-speed devices, but the transactions to the full- andlow-speed endpoints use the split-transaction protocol on the high-speed bus. The split transaction protocolis an encapsulation of (or wrapper around) the full- or low-speed transaction. The high-speed wrapperportion of the protocol is addressed to the USB 2.0 hub and Transaction Translator below which the full-or low-speed device is attached.EHCI uses dedicated data structures for managing full-speed isochronous data streams. Control, Bulk andInterrupt are managed using the queuing data structures. The interface data structures need to beprogrammed with the device address and the Transaction Translator number of the USB 2.0 hub operatingas the low-/full-speed host controller for this link. The following sections describe the details of how thehost controller processes and manages the split transaction protocol.24.9.12.1 Split Transactions for Asynchronous TransfersA queue head in the asynchronous schedule with an EPS field indicating a full-or low-speed deviceindicates to the host controller that it must use split transactions to stream data for this queue head. Allfull-speed bulk and full-, low-speed control are managed via queue heads in the asynchronous schedule.The software must initialize the queue head with the appropriate device address and port number for thetransaction translator that is serving as the full-/low-speed host controller for the links connecting theendpoint. The software must also initialize the split transaction state bit (SplitXState) to Do-Start-Split.Finally, if the endpoint is a control endpoint, then system The software must set the Control Transfer Type(C) bit in the queue head to a one. If this is not a control transfer type endpoint, the C bit must be initializedby the software to be a zero. This information is used by the host controller to properly set the EndpointType (ET) field in the split transaction bus token. When the C bit is a zero, the split transaction token's ETfield is set to indicate a bulk endpoint. When the C bit is a one, the split transaction token's ET field is setto indicate a control endpoint. Refer to Chapter 8 of USB Specification, Revision 2.0 for details.Figure 24-52. Host Controller Asynchronous Schedule Split-Transaction State MachineDoAcKComplete-SplitDoStart-Split!XactErr.and.!NYET.and.!StallEndpoint HaltNyetNaKXactErrEndpoint HaltEndpoint ActiveSet XactErr Bit andDecrement Error Count(CERR)XactErrCERR goesto ZeroStallDecrementError Count(CERR)CERR goesto ZeroNaK.and.PidCode .eq. SETUPDecrementError Count(CERR)andDo Immediate Retryof Complete-Split