Transfer Descriptors. A Transfer Descriptor (TD) is a system memory data structure that is used by the Host Controller to define a buffer of data that will be moved to or from an endpoint. TDs come in two types: general and isochronous. The General TD is used for Interrupt, Control, and Bulk Endpoints and an Isochronous TD is used to deal with the unique requirements of isochronous transfers. Two TD types are supported because the nature of isochronous transfers does not lend itself to the standard DMA buffer format and the packetizing of the buffer required for isochronous transfers is too restrictive for general transfer types. Both the General TD and the Isochronous TD provide a means of specifying a buffer that is from 0 to 8,192 bytes long. Additionally, the data buffer described in a single TD can span up to two physically disjoint pages. Although the scatter/gather capabilities of a single TD are limited, it eliminates most of the problems associated with forcing buffers to be physically contiguous including the possibility of superfluous data movements. Transfer Descriptors are linked to queues attached to EDs. The ED provides the endpoint address to/from which the TD data is to be transferred. The Host Controller Driver adds to the queue and the Host Controller removes from the queue. When the Host Controller removes a TD from a queue, it links the TD to the Done Queue. When a TD is unlinked from the ED and linked to the Done Queue, it is said to be ‘retired’. A TD may be retired due to normal completion or because of an error condition. When the TD is retired, a condition code value is written in the TD which allows the Host Controller Driver to determine the reason it was retired. Details of TD processing are dependent on the type of TD and are discussed in Sections 4.3.1 through 4.3.3.1.
Appears in 2 contracts
Sources: Adopter’s Agreement for Open Host Controller Interface Reciprocal Covenant, Adopter’s Agreement for Open Host Controller Interface Reciprocal Covenant