![Intel IXP45X Скачать руководство пользователя страница 481](http://html1.mh-extra.com/html/intel/ixp45x/ixp45x_developers-manual_2073092481.webp)
Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
August 2006
Developer’s Manual
Order Number: 306262--, Revision: 004US
481
USB 2.0 Host Controller—Intel
®
IXP45X and Intel
®
IXP46X Product Line of Network Processors
Active bit to a zero. It returns to the state of siTD
X+2
and changes its SplitXState to Do
Start Split. At this point, the host controller is prepared to execute start-splits for
siTDX+2 when it reaches micro-frame 4.
9.14.13
Host Controller Pause
When the host controller's HCHalted bit in the USBSTS register is a zero, the host
controller is sending SOF (Start OF Frame) packets down all enabled ports. When the
schedules are enabled, the EHCI host controller will access the schedules in main
memory each micro-frame. This constant pinging of main memory is known to create
CPU power management problems for mobile systems. Specifically, mobile systems
aggressively manage the state of the CPU, based on recent history usage. In the more
aggressive power saving modes, the CPU can disable its caches. Current PC
architectures assume that bus-master accesses to main memory must be cache-
coherent. So, when bus masters are busy touching memory, the CPU power
management software can detect this activity over time and inhibit the transition of the
CPU into its lowest power savings mode. USB controllers are bus-masters and the
frequency at which they access their memory-based schedules keeps the CPU power
management software from placing the CPU into its lowest power savings state.
USB Host controllers don't access main memory when they are suspended. However,
there are a variety of reasons why placing the USB controllers into suspend won't work,
but they are beyond the scope of this document. The base requirement is that the USB
controller needs to be kept out of main memory, while at the same time, the USB bus is
kept from going into suspend.
EHCI controllers provide a large-grained mechanism that can be manipulated by
system software to change the memory access pattern of the host controller. System
software can manipulate the schedule enable bits in the USBCMD register to turn on/off
the scheduling traversal. A software heuristic can be applied to implement an on/off
duty cycle that allows the USB to make reasonable progress and allow the CPU power
management to get the CPU into its lowest power state. This method is not intended to
be applied at all times to throttle USB, but should only be applied in very specific
configurations and usage loads. For example, when only a keyboard or mouse is
attached to the USB, the heuristic could detect times when the USB is attempting to
move data only very infrequently and can adjust the duty cycle to allow the CPU to
reach it's low power state for longer periods of time. Similarly, it could detect increases
in the USB load and adjust the duty cycle appropriately, even to the point where the
schedules are never disabled. The assumption here is that the USB is moving data and
the CPU will be required to process the data streams.
It is suggested that in order to provide a complete solution for the system, the
companion host controllers should also provide a similar method to allow system
software to inhibit the companion host controller from accessing it's shared memory
based data structures (schedule lists or otherwise).
9.14.14
Port Test Modes
EHCI host controllers must implement the port test modes Test J_State, Test
K_State, Test_Packet, Test Force_Enable, and Test SE0_NAK as described in the
USB Specification Revision 2.0. The system is only allowed to test ports that are owned
by the EHCI controller (e.g. CF-bit is a one and PortOwner bit is a zero). System
software is allowed to have at most one port in test mode at a time. Placing more than
one port in test mode will yield undefined results. The required, per port test sequence
is (assuming the CF-bit in the CONFIGFLAG register is a one):
• Disable the periodic and asynchronous schedules by setting the Asynchronous
Schedule Enable and Periodic Schedule Enable bits in the USBCMD register to a
zero.