Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
August 2006
Developer’s Manual
Order Number: 306262--, Revision: 004US
445
USB 2.0 Host Controller—Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
mandatory for interrupt queue heads. Software should ensure that the Mult
field is set appropriately for the transfer type.
The pre-conditions evaluated are:
— The host controller determines whether there is enough time in the micro-
frame to complete this transaction (see
Section 9.14.4.1, “Example: Preserving
Micro-Frame Integrity” on page 420
for an example evaluation method). If
there is not enough time to complete the transaction, the host controller exits
this state.
— If the value of qHTransactionCounter for an interrupt endpoint is zero, then the
host controller exits this state.
When the pre-operations are complete and pre-conditions are met, the host controller
sets the Reclamation bit in the USBSTS register to a one and then begins executing one
or more transactions using the endpoint information in the queue head. The host
controller iterates qHTransactionCounter times in this state executing transactions.
After each transaction is executed, qHTransactionCounter is decremented by one. The
host controller will exit this state when one of the following events occurs:
• The qHTransactionCounter decrements to zero, or
• The endpoint responds to the transaction with any handshake other than an ACK,
1
or
• The transaction experiences a transaction error, or
• The Active bit in the queue head goes to a zero, or
• There is not enough time in the micro-frame left to execute the next transaction
(see
Section 9.14.4.1.1, “Transaction Fit: A Best-Fit Approximation Algorithm” on
for example method for implementing the frame boundary test).
The results of each transaction is recorded in the on-chip overlay area. If data was
successfully moved during the transaction, the transfer state in the overlay area is
advanced. To advance queue head’s transfer state, the Total Bytes to Transfer field is
decremented by the number of bytes moved in the transaction, the data toggle bit (dt)
is toggled, the current page offset is advanced to the next appropriate value (e.g.
advanced by the number of bytes successfully moved), and the C_Page field is updated
to the appropriate value (if necessary). See
“Buffer Pointer List Use for Data Streaming
.
Note that the Total Bytes To Transfer field may be zero when all the other criteria for
executing a transaction are met. When this occurs, the host controller will execute a
zero-length transaction to the endpoint. If the PID_Code field indicates an IN
transaction and the device delivers data, the host controller will detect a packet babble
condition, set the babble and halted bits in the Status field, set the Active bit to a zero,
write back the results to the source qTD, then exit this state.
In the event an IN token receives a data PID mismatch response, the host controller
must ignore the received data (e.g. not advance the transfer state for the bytes
received). Additionally, if the endpoint is an interrupt IN, then the host controller must
record that the transaction occurred (e.g. decrement qHTransactionCounter). It is
recommended (but not required) the host controller continue executing transactions for
this endpoint if the resultant value of qHTransactionCounter is greater than one.
If the response to the IN bus transaction is a Nak (or Nyet) and RL is non-zero, NakCnt
is decremented by one. If RL is zero, then no write-back by the host controller is
required (for a transaction receiving a Nak or Nyet response and the value of CErr did
not change). Software should set the RL field to zero if the queue head is an interrupt
endpoint. Host controller hardware is not required to enforce this rule or operation.
1. For a high-bandwidth interrupt OUT endpoint, the host controller may optionally immediately
retry the transaction if it fails.