![Intel IXP45X Скачать руководство пользователя страница 484](http://html1.mh-extra.com/html/intel/ixp45x/ixp45x_developers-manual_2073092484.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
484
Order Number: 306262-004US
queue head (see
“Halting a Queue Head” on page 447
). Maximum Length is defined as the
minimum of Total Bytes to Transfer and Maximum Packet Size. The CErr field is not
decremented for a packet babble condition (only applies to queue heads). A babble
condition also exists if IN transaction is in progress at High-speed EOF2 point. This is
called a frame babble. A frame babble condition is recorded into the appropriate
schedule data structure. In addition, the host controller must disable the port to which
the frame babble is detected.
The USBERRINT bit in the USBSTS register is set to a one and if the USB Error Interrupt
Enable bit in the USBINTR register is a one, then a hardware interrupt is signaled to the
system at the next interrupt threshold. The host controller must never start an OUT
transaction that will babble across a micro-frame EOF.
Note:
When a host controller detects a data PID mismatch, it must either: disable the packet
babble checking for the duration of the bus transaction or do packet babble checking
based solely on Maximum Packet Size. The USB core specification defines the
requirements on a data receiver when it receives a data PID mismatch (e.g. expects a
DATA0 and gets a DATA1 or visa-versa). In summary, it must ignore the received data
and respond with an ACK handshake, in order to advance the transmitter's data
sequence. The EHCI interface allows System software to provide buffers for a Control,
Bulk or Interrupt IN endpoint that are not an even multiple of the maximum packet size
specified by the device. Whenever a device misses an ACK for an IN endpoint, the host
and device are out of synchronization with respect to the progress of the data transfer.
The host controller may have advanced the transfer to a buffer that is less than
maximum packet size. The device will re-send its maximum packet size data packet,
with the original data PID, in response to the next IN token. In order to properly
manage the bus protocol, the host controller must disable the packet babble check
when it observes the data PID mismatch.
Data Buffer Error
This event indicates that an overrun of incoming data or a underrun of outgoing data
has occurred for this transaction. This would generally be caused by the host controller
not being able to access required data buffers in memory within necessary latency
requirements. These conditions are not considered transaction errors, and do not effect
the error count in the queue head. When these errors do occur, the host controller
records the fact the error occurred by setting the Data Buffer Error bit in the queue
head, iTD or siTD.
If the data buffer error occurs on a non-isochronous IN, the host controller will not
issue a handshake to the endpoint. This will force the endpoint to resend the same data
(and data toggle) in response to the next IN to the endpoint.
If the data buffer error occurs on an OUT, the host controller must corrupt the end of
the packet so that it cannot be interpreted by the device as a good data packet. Simply
truncating the packet is not considered acceptable. An acceptable implementation
option is to 1's complement the CRC bytes and send them. There are other options
suggested in the Transaction Translator section of the USB Specification Revision 2.0.
9.14.15.1.2 USB Interrupt (Interrupt on Completion (IOC))
Transfer Descriptors (iTDs, siTDs, and queue heads (qTDs)) contain a bit that can be
set to cause an interrupt on their completion. The completion of the transfer associated
with that schedule item causes the USB Interrupt (USBINT) bit in the USBSTS register
to be set to a one. In addition, if a short packet is encountered on an IN transaction
associated with a queue head, then this event also causes USBINT to be set to a one. If
the USB Interrupt Enable bit in the USBINTR register is set to a one, a hardware
interrupt is signaled to the system at the next interrupt threshold. If the completion is
because of errors, the USBERRINT bit in the USBSTS register is also set to a one.