![Intel IXP45X Скачать руководство пользователя страница 468](http://html1.mh-extra.com/html/intel/ixp45x/ixp45x_developers-manual_2073092468.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
468
Order Number: 306262-004US
It is imperative that System software must not update these masks to new values in
the midst of a split transaction. In order to avoid any race conditions with the update,
the EHCI host controller provides a simple assist to system software. System software
sets the Inactivate-on-next-Transaction (I) bit to a one to signal the host controller
that it intends to update the S-mask and C-mask on this queue head. System software
will then wait for the host controller to observe the I-bit is a one and transition the
Active bit to a zero. The rules for how and when the host controller sets the Active bit
to zero are enumerated below:
• If the Active bit is a zero, no action is taken. The host controller does not attempt
to advance the queue when the I-bit is a one.
• If the Active bit is a one and the SplitXState is DoStart (regardless of the value of
S-mask), the host controller will simply set Active bit to a zero. The host controller
is not required to write the transfer state back to the current qTD. Note that if the
S-mask indicates that a start-split is scheduled for the current micro-frame, the
host controller must not issue the start-split bus transaction. It must set the Active
bit to zero.
System software must save transfer state before setting the I-bit to a one. This is
required so that it can correctly determine what transfer progress (if any) occurred
after the I-bit was set to a one and the host controller executed its final bus-transaction
and set Active to a zero.
After system software has updated the S-mask and C-mask, it must then reactivate the
queue head. Since the Active bit and the I-bit cannot be updated with the same write,
system software needs to use the following algorithm to coherently re-activate a queue
head that has been stopped via the I-bit.
3. Set the Halted bit to a one, then
4. Set the I-bit to a zero, then
5. Set the Active bit to a one and the Halted bit to a zero in the same write.
Setting the Halted bit to a one inhibits the host controller from attempting to advance
the queue between the time the I-bit goes to a zero and the Active bit goes to a one.
9.14.12.3 Split Transaction Isochronous
Full-speed isochronous transfers are managed using the split-transaction protocol
through a USB 2.0 transaction translator in a USB 2.0 hub. The EHCI controller utilizes
siTD data structure to support the special requirements of isochronous split-
transactions. This data structure uses the scheduling model of isochronous TDs (iTD,
Section 9.13.3, “Isochronous (High-Speed) Transfer Descriptor (iTD)” on page 391
(see
Section 9.14.7, “Managing Isochronous Transfers Using iTDs” on page 426
operational model of iTDs) with the contiguous data feature provided by queue heads.
This simple arrangement allows a single isochronous scheduling model and adds the
additional feature that all data received from the endpoint (per split transaction) must
land into a contiguous buffer.
9.14.12.3.1 Split Transaction Scheduling Mechanisms for Isochronous
Full-speed isochronous transactions are managed through a transaction translator's
periodic pipeline. As with full- and low-speed interrupt, system software manages each
transaction translator's periodic pipeline by budgeting and scheduling exactly during
which micro-frames the start-splits and complete-splits for each full-speed isochronous
endpoint occur. The requirements described in
Mechanisms for Interrupt” on page 456
illustrates the general
scheduling boundary conditions that are supported by the EHCI periodic schedule. The
S
X and
C
X labels indicate micro-frames where software can schedule start- and