2 data structures, 2 data structures -4, Figure 11-3. typical list structure -4 – Cirrus Logic EP93xx User Manual
Page 444

11-4
DS785UM1
Copyright 2007 Cirrus Logic
Universal Serial Bus Host Controller
EP93xx User’s Guide
1
1
1
1
11
11.2.2.2 Data Structures
The basic building blocks for communication across the interface are the Endpoint Descriptor 
(ED) and Transfer Descriptor (TD).
The Host Controller Driver assigns an Endpoint Descriptor to each endpoint in the system. 
The Endpoint Descriptor contains the information necessary for the Host Controller to 
communicate with the endpoint. The fields include the maximum packet size, the endpoint 
address, the speed of the endpoint, and the direction of data flow. Endpoint Descriptors are 
linked in a list.
A queue of Transfer Descriptors is linked to the Endpoint Descriptor for the specific endpoint. 
The Transfer Descriptor contains the information necessary to describe the data packets to 
be transferred. The fields include data toggle information, shared memory buffer location, and 
completion status codes. Each Transfer Descriptor contains information that describes one or 
more data packets. The data buffer for each Transfer Descriptor ranges in size from 0 to 8192 
bytes with a maximum of one physical page crossing. Transfer Descriptors are linked in a 
queue: the first one queued is the first one processed.
Each data transfer type has its own linked list of Endpoint Descriptors to be processed.
, Typical List Structure, is a representation of the data structure relationships.
Figure 11-3. Typical List Structure
The head pointers to the bulk and control Endpoint Descriptor lists are maintained within the 
operational registers in the HC. The Host Controller Driver initializes these pointers prior to 
the Host Controller gaining access to them. Should these pointers need to be updated, the 
Host Controller Driver may need to halt the Host Controller from processing the specific list, 
update the pointer, then re-enable the HC.
The head pointers to the interrupt Endpoint Descriptor lists are maintained within the HCCA. 
There is no separate head pointer for isochronous transfers. The first isochronous Endpoint 
Descriptor simply links to the last interrupt Endpoint Descriptor. There are 32 interrupt head 
pointers. The head pointer used for a particular frame is determined by using the last 5 bits of 
the Frame Counter as an offset into the interrupt array within the HCCA.
The interrupt Endpoint Descriptors are organized into a tree structure with the head pointers 
being the leaf nodes. The desired polling rate of an Interrupt Endpoint is achieved by 
Head Ptr
ED
ED
ED
ED
TD
TD
TD
TD
TD
TD
TD
