![Intel IXP45X Developer'S Manual Download Page 434](http://html1.mh-extra.com/html/intel/ixp45x/ixp45x_developers-manual_2073092434.webp)
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors—USB 2.0 Host Controller
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
Developer’s Manual
August 2006
434
Order Number: 306262-004US
lightweight handshake that is used by software as a key that it can free (or reuse) the
memory associated the data structures it has removed from the asynchronous
schedule.
The handshake is implemented with three bits in the host controller. The first bit is a
command bit (Interrupt on Async Advance Doorbell bit in the USBCMD register) that
allows software to inform the host controller that something has been removed from its
asynchronous schedule. The second bit is a status bit (Interrupt on Async Advance bit
in the USBSTS register) that the host controller sets after it has released all on-chip
state that may potentially reference one of the data structures just removed. When the
host controller sets this status bit to a one, it also sets the command bit to a zero. The
third bit is an interrupt enable (Interrupt on Async Advance bit in the USBINTR
register) that is matched with the status bit. If the status bit is a one and the interrupt
enable bit is a one, then the host controller will assert a hardware interrupt.
Figure 61, “Generic Queue Head Unlink Scenario” on page 434
illustrates a general
example. In this example, consecutive queue heads (B and C) are unlinked from the
schedule using the algorithm above. Before the unlink operation, the host controller
has a copy of queue head A.
The unlink algorithm requires that as software unlinks each queue head, the unlinked
queue head is loaded with the address of a queue head that will remain in the
asynchronous schedule.
When the host controller observes that doorbell bit being set to a one, it makes a note
of the local reachable schedule information. In this example, the local reachable
schedule information includes both queue heads (A & B). It is sufficient that the host
controller can set the status bit (and clear the doorbell bit) as soon as it has traversed
beyond current reachable schedule information (i.e. traversed beyond queue head (B)
in this example).
Alternatively, a host controller implementation is allowed to traverse the entire
asynchronous schedule list (for example, observed the head of the queue [twice])
before setting the Advance on Async status bit to a one.
Figure 61.
Generic Queue Head Unlink Scenario
B4715-01