
Шины.PCI,.USB.и.FireWire
.pdf
Таблица 15.4 (продолжение)
Смеще Назначение ние
108h HceOutput — эмуляция выходного буфера KBC: программный ввод байта из порта 60h вернет данные из бит [7:0] этого регистра (и сбросит флаг BufferFull
в HceStatus), биты [31:8] — резерв
10Ch HceStatus — эмуляция регистра состояния KBC (табл. 15.5)
Рис. 15.9. Регистры общего управления и состояния OHC: а — HcControl; б — HcCommandStatus; в — HcInterruptStatus, HcInterruptEnable и HcInter ruptDisable (* бит MIE — только в регистре HcInterruptEnable)
При разрешенной эмуляции контроллера клавиатуры и мыши контроллер OHC перехватывает (декодирует) обращения по адресам ввода/вывода 60h и 64h:
инструкция IN, обращенная к порту 60h, вернет байт из регистра HceOutput, а также установит в регистре HceStatus флаг OutputFull = 0;
инструкция OUT, обращенная к порту 60h, запишет байт в регистр HceInput, а так$ же установит в регистре HceStatus флаги InputFull = 1 и CmdData = 0;
инструкция IN, обращенная к порту 64h, вернет байт текущего состояния из регистра HceStatus;
инструкция OUT, обращенная к порту 64h, запишет байт в регистр HceInput, а так$ же установит в регистре HceStatus флаги InputFull = 0 и CmdData = 1.
ПО эмуляции отрабатывает эти обращения, пользуясь клавиатурой и мышью, под$ ключенными к USB. Ряд обращений требует действий, которые эмулятор должен

выполнить невидимо для ПО. Эти действия вызывают условие прерывания для эмулятора, которое может выполняться как системное прерывание SMI. При этом оказывается, что с хост$контроллером должны взаимодействовать как нормаль$ ный драйвер ОС, так и драйвер эмулятора, работающий в режиме системного уп$ равления (SMM). Чтобы корректно передавать право на управление контролле$ ром между этими драйверами, в регистрах HcCommandStatus и HcInterruptStatus предусмотрены соответствующие биты.
Рис. 15.10. Регистры корневого хаба: а — HcRhDescriptorA, б — HcRhStatus; в — HcRhPortStatus[i]
Таблица 15.5. Назначение бит регистров управления и состояния эмуляции
Бит Назначение
Регистр HceControl
0EmulationEnable, разрешение эмуляции
1EmulationInterrupt, признак условия прерывания для эмуляции
2CharacterPending, разрешение прерывания эмуляции по обнулению бита OutputFull в регистре HceStatus (требуется следующий байт от клавиатуры или мыши)
3IRQEn, разрешение генерации IRQ1 или IRQ12 по установке бита OutputFull в регистре HceStatus
4ExternalIRQEn, разрешение формирования сигнала прерывания эмуляции по сигналу IRQ1 и IRQ12 от KBC (независимо от состояния EmulationEnable)
продолжение

Таблица 15.5 (продолжение)
Бит Назначение
5GateA20Sequence, признак команды управления вентилем GateA20, устанавливается по записи байта D1h в порт 64h, сбрасывается по записи любого другого значения
в этот порт
6IRQ1Active, признак сигнала IRQ1 от KBC (сбрасывается записью «1»)
7 IRQ12Active, признак сигнала IRQ12 от KBC (сбрасывается записью «1»)
8 A20State, индикатор состояния сигнала GateA20 от KBC
9–31 Резерв (0)
Регистр HceStatus
0OutputFull, выходной буфер контроллера полон. Сбрасывается при чтении порта 60h. При установке этого бита и при IRQEn = 1 вырабатывается IRQ1 (при AuxOutputFull = 0) или IRQ12 (при AuxOutputFull = 1)
1 InputFull, входной буфер полон. Устанавливается при записи в порт 60h или 64h (кроме команд управления вентилем GateA20)
2Flag, системный флаг для определения «холодной» или «теплой» загрузки
3CmdData, признак команды или данных для контроллера: запись в порт 60h сбрасывает бит, запись в порт 64h — устанавливает
4Inhibit Switch, состояние ключа запрета клавиатуры (1 — клавиатура не запрещена)
5AuxOutputFull, признак прихода данных от мыши
6Time-out, признак тайм аута при обмене с клавиатурой
7Parity, признак ошибки четности при обмене с клавиатурой
«Расширенный» хост контроллер — EHC
«Расширенный» хост$контроллер EHC (Enhanced Host Controller) был введен фирмой Intel для поддержки высокой скорости в USB 2.0. Его интерфейс — EHCI — описан в документе «Enhanced Host Controller Interface Specification for Universal Serial Bus», версия 1.0 опубликована в марте 2002 года. Контроллер EHC предназ$ начен для работы с устройствами только на высокой скорости подключения к кор$ невому хабу, при этом для устройств FS/LS, которые подключены через проме$ жуточный хаб USB 2.0, контроллер EHC выполняет расщепленные транзакции (см. главу 11). С теми портами корневого хаба, к которым непосредственно под$ ключены хабы и устройства USB 1.x, работает контроллер$компаньон (UHC или OHC). Коммутацию портов и контроллеров осуществляет маршрутизирующая логика, входящая в состав корневого хаба USB 2.0. Обнаружением подключения устройств к корневому хабу занимается драйвер EHC через регистры EHC. Обна$ ружив подключение FS/LS$устройства, драйвер перекоммутирует данный порт на контроллер$компаньон, и с этого момента порт отдается в ведение компаньону и его драйверу. Компаньон и его драйвер могут и не «знать» о том, что они работают в составе контроллера USB 2.0. Для портов, остающихся в ведении EHC, эмулиру$

ется внешний хаб — ПО манипулирует портами, используя стандартные запросы к хабам USB.
Контроллер EHC имеет конфигурационные регистры PCI, операционные регист$ ры ввода/вывода, отображенные на пространство памяти (memory mapped I/O) и использует область системной памяти для взаимодействия с драйвером.
С точки зрения взаимодействия с драйвером EHC отчасти напоминает UHC, но высокая скорость передачи (480 Мбит/с) потребовала усиления интеллекта кон$ троллера с целью уменьшения числа операций обмена между драйвером, памятью и контроллером. В EHC просматриваются многие идеи, заложенные в OHC. Структуры данных разработаны с учетом минимизации обращений к памяти. Все структуры должны размещаться в памяти так, чтобы они не пересекали границы четырехкилобайтных страниц памяти — это позволяет оптимизировать сосуще$ ствование OHC с виртуальной памятью, основанной на страничной переадреса$ ции, применяемой в процессорах x86.
В EHCI с точки зрения планирования транзакций передачи делятся на периоди ческие (изохронные и прерывания) и асинхронные (управляющие передачи и мас$ сивы). Каждый из этих двух планов реализуется по$своему и может быть включен в работу и выключен. Контроллер начинает каждый микрокадр с выполнения пе$ риодических передач (если они разрешены), оставшееся от них время выделяется для выполнения асинхронных передач (аналогично UHC, см. рис. 15.1, а). За то, чтобы в микрокадре оставалось время для асинхронных передач, отвечает драй$ вер. Хост$контроллер аппаратно следит лишь за тем, чтобы транзакции не пересе$ кали границу микрокадра: если контроллер «видит», что транзакция может не успеть завершиться к моменту EOF1, он ее не начнет. При этом возможна пере$ страховка, поскольку точное время исполнения транзакции заранее не известно (неизвестно, сколько придется вставить бит и каковы задержки в кабелях, хабах и устройстве).
Для всех передач с гарантированной доставкой (прерывания, управление и масси$ вы) используются структуры данных qTD (Queue Element Transfer Descriptor), описывающие очереди буферов, обеспечивающие автоматическое упорядоченное исполнение потоков передач. В EHC под передачей понимается последователь$ ность однотипных транзакций1; ограничен лишь суммарный размер передаваемых блоков (20 Кбайт). Транзакции управления хост планирует как последовательность двух$трех «передач» (в терминах EHC). Драйвер может динамически (во время исполнения плана) добавлять новые передачи в очереди. Контроллер аппаратно поддерживает сигнализацию окончания блоков короткими пакетами: приняв ко$ роткий пакет, контроллер может пойти по альтернативной последовательности передач для данной очереди (то есть организуется условный переход). Для изо$ хронных передач используются специальные структуры данных (iTD — Isochronous Transaction Descriptors для HS и siTD — Split$transaction IsochronousTransfer Descrip$ tors для расщепления транзакций с FS$устройствами). Для изохронных передач на HS дескриптор может описывать передачу до 24 Кбайт данных, на FS — до 1023 байт.
1 По сравнению с UHC это уже некоторый прогресс.
Основой планирования периодических транзакций является список кадров (Frame List) на 1024, 512 или 256 вхождений. Базовый адрес и длина списка устанавли$ вается программно, текущий элемент списка выбирается по счетчику кадров. Ис$ полнение плана начинается в каждом микрокадре, таким образом, каждый теку$ щий элемент списка выбирается 8 раз подряд, после чего контроллер переходит к следующему элементу. Элемент списка может указывать на iTD, siTD или заго$ ловок очереди (QH), относящейся к прерываниям. Кроме того, он может указывать на специальные структуры (FSTN), используемые для обеспечения корректности отработки расщепленных транзакций около границы кадра. В элементе списка кроме собственно указателя имеется идентификатор типа структуры (Typ), на ко$ торую ссылается указатель (iTD, siTD, QH или FSTN), а также признак заглушки$ терминатора (T). Все дескрипторы изохронных передач и заголовки очередей име$ ют «горизонтальный» указатель на следующую структуру, в котором также задается и тип (Typ) этой структуры, и признак заглушки$терминатора (T). Цепочка де$ скрипторов и заголовков очередей, начинающаяся от списка кадров, должна за$ вершаться дескриптором (или заголовком), у которого установлен признак заг$ лушки$терминатора (T). Только отработав такой дескриптор (или заголовок), контроллер приступает к исполнению плана асинхронных передач.
Для упрощения планирования расщепленных транзакций (они не должны пересе$ кать границу кадра) контроллер организует фазовый сдвиг между кадрами шины (B Frame), которые видны хабам и устройствам по факту смены номера кадра в маркере SOF, и кадрами хоста (H Frame), которыми оперирует драйвер при пост$ роении планов и по которым выбираются периодические транзакции из списка кадров. Кадры шины отстают от кадров хоста на один микрокадр, более подроб$ ные пояснения (но не мотивы) приведены в спецификации EHCI. Для обслужи$ вания расщепленных периодических транзакций имеется специальная структура (узел) FSTN, содержащая пару указателей: нормальный, обеспечивающий переход к следующей структуре (iTD, siTD, QH или FSTN), и обратный, который может ука$ зывать только на заголовок очереди. Нюансы планирования расщепленных транз$ акций здесь приводить не будем, с ними можно ознакомиться в спецификации EHCI.
Основой планирования непериодических транзакций является асинхронный спи сок (asynchronous list), представляющий собой кольцо из заголовков очередей. В OHC регистр AsyncListAddr указывает на текущий элемент списка; к отработ$ ке этого элемента контроллер приступает, завершив отработку периодических пе$ редач в данном микрокадре (или сразу, если периодические передачи запрещены или отсутствуют). Далее, по мере отработки очередей, контроллер заносит в этот регистр адреса последующих указателей. Таким образом, обслуживание всех асинхронных очередей выполняется по кругу, без привязки к конкретным кадрам. Контроллер останавливает обход асинхронного списка, когда обнаруживает опус$ тошение всех его очередей, для возобновления обхода требуется вмешательство драйвера. Нормальной дисциплиной обслуживания очередей является отработка одной шинной транзакции из очереди, после чего контроллер переходит к следую$ щей очереди. Возможен и специальный режим парковки (Asynchronous Schedule
Park Mode), в котором контроллеру разрешается выполнять подряд по несколько транзакций из одной очереди. Режим парковки распространяется на все очереди высокоскоростных асинхронных передач.
Дескриптор iTD описывает изохронную передачу, которая может выполняться за 1–8 этапов (микрокадров, в которых происходит обращение к данному дескрип$ тору). Каждому этапу в дескрипторе соответствует своя запись (transaction record), управляющая выполнением и отражающая состояние транзакции (активность, ошибки выполнения, необходимость прерывания по выполнению, реальная дли$ на) и содержащая указатель на буфер данных. Каждый этап может выполняться за 1–3 транзакции в микрокадре (точка может быть широкополосной). Дескриптор содержит и описание конечной точки: адрес устройства и точки, направление, раз$ мер пакета. Контроллер формирует транзакции исходя из указанного размера па$ кета. Буферы для данных могут располагаться в разных физических страницах памяти, но логически они должны представлять собой непрерывную область в вир$ туальной памяти. Для хранения данных (максимум 8 этапов по три транзакции по 1024 байт — 24 576 байт) может потребоваться до 7 страниц по 4 кбайт; для всех этих страниц в дескрипторе имеются соответствующие указатели.
Дескриптор siTD описывает одну расщепленную транзакцию. Адресная часть со$ держит номер и направление конечной точки, адрес устройства, а также адрес и но$ мер порта хаба, выполняющего трансляцию данной транзакции. В дескрипторе имеются поля битовых масок μFrame_S-mask и μFrame_C-mask, определяющих,
вкаких микрокадрах данного кадра должны выполняться транзакции SS и CS со$ ответственно (см. главу 14). Контроллер в дескрипторе отмечает микрокадры,
вкоторых в действительности происходили транзакции CS. Дескриптор имеет обычный набор полей, управляющих выполнением и отражающих состояние тран$ закции (активность, ошибки выполнения, необходимость прерывания по выпол$ нению, реальная длина). Кроме того, в siTD имеются специфические поля, управ$ ляющие текущей фазой (SS или CS), а также признак специфической ошибки расщепленной транзакции — пропуска микрокадра, в котором должна выполнять$ ся очередная транзакция CS. Этот пропуск может случиться, если контроллер не выпустит текущую транзакцию из$за нехватки времени в микрокадре. Блок пере$ даваемых данных (до 1023 байт) может располагаться в одной или двух физичес$ ких страницах памяти, и в дескрипторе для них имеются необходимые указатели. В siTD имеется специфический элемент — обратный указатель (Back Pointer) на siTD предыдущего кадра, который используется при планировании транзакций IN, завершающихся близко к границе кадра.
Элемент очереди$дескриптор передачи qTD, описывает одну передачу размером до 20 480 байт. Дескриптор привязан к своему заголовку очереди (QH); он содержит пару указателей на следующие элементы данной очереди:
основной, указывающий на дескриптор следующей передачи, которую требует$ ся выполнить после нормального завершения текущей;
альтернативный, указывающий на дескриптор передачи, которую требуется вы$ полнить в случае завершения текущей передачи по приему короткого пакета.
Дескриптор имеет обычный набор полей, управляющих выполнением и отражаю$ щих состояние транзакции: активность, ошибки выполнения, необходимость пре$ рывания по выполнению, используемый маркер (IN, OUT или SETUP). В дескрип$ торе указывается общая длина передачи. Буфер данных для передачи должен располагаться в непрерывной области виртуальной памяти; для описания буфера передачи максимальной длины имеется массив из пяти указателей физических страниц.
Заголовок очереди QH создается для каждой сконфигурированной неизохронной конечной точки каждого устройства USB. Заголовки очередей непериодических конечных точек связаны между собой по горизонтали в кольцо, для чего в каждом заголовке имеется соответствующий указатель. Заголовок очереди несет исчер$ пывающее описание конечной точки: номер и направление точки, максимальный размер пакета, число пакетов в микрокадре (для широкополосных точек), адрес устройства, его скорость. Для FS/LS устройств имеется и информация для выпол$ нения расщепленных транзакций: номер хаба и порта, выполняющего расщепле$ ние транзакций, маски микрокадров для транзакций SS и CS. В заголовке очереди имеется оверлейная область, в которую контроллер помещает необходимые ему поля qTD текущей транзакции. Продвижение по очереди осуществляет контрол$ лер, помещая в оверлей следующий qTD после завершения отработки предыдущего.
Контроллер EHC вырабатывает прерывания для разных категорий событий, и ка$ тегории могут быть селективно замаскированы:
по завершении передачи, в дескрипторе которой имеется соответствующий при$ знак, а также по приему короткого пакета. Эти прерывания могут быть задер$ жаны по времени до определенного задаваемого программно порога, что по$ зволяет снизить частоту запросов прерывания от EHC. Без задержки частота запросов может достигать частоты микрокадров (для IBM PC это слишком ча$ сто); с задержкой они не смогут появляться быстрее, чем определяет значение порога;
по событию хост$контроллера: оборот по списку кадров, изменению состояния или перегрузке портов хаба, специальному разрешению программного измене$ ния последовательности заголовков очередей, по ошибке системного подклю$ чения (переполнение или переопустошение буфера FIFO из$за занятости шины PCI).
Постановка запросов передач в очереди, как и включение изохронных передач в план, а также добавление/удаление очередей может выполняться драйвером ди$ намически, во время работы хост$контроллера. Однако для сохранения целостно$ сти и связанности структур программа должна соблюдать определенные правила взаимодействия, чтобы не пытаться изменять структуры, которые в данный мо$ мент отрабатываются контроллером. Для этой синхронизации хост$контроллер использует специальные биты$признаки в своем регистре состояния и в структу$ рах данных. Для «сбора урожая» — поиска отработанных передач — драйверу при$ ходится просматривать во всех дескрипторах передач признаки активности. Тако$ го сервиса, как очередь исполненных передач (как в OHC), контроллер EHC не

предоставляет. Но по сравнению с UHC, конечно же, объем работ драйвера EHC сокращается, поскольку этот контроллер оперирует передачами, а не транзакция$ ми. Однако у драйвера EHC появляется дополнительная довольно сложная зада$ ча — планирование расщепленных транзакций.
Структуры данных и регистры EHC
Контроллер EHC имеет несколько наборов регистров:
конфигурационные регистры PCI — стандартный заголовок и специфические регистры, приведенные в табл. 15.6. В заголовке для EHC указывается код класса 0Ch, подкласс 03h, интерфейс 20h;
регистры описания структуры контроллера, отображенные на память (табл. 15.7); на их положение указывает BAR в заголовке конфигурационного простран$ ства;
операционные регистры EHC (32$битные), отображенные на память (табл. 15.8); они расположены вслед за предыдущим набором.
Таблица 15.6. Специфические регистры конфигурационного пространства EHC
Смещение |
Назначение |
(длина) |
|
|
|
60h (8 бит) |
SBRN (Serial Bus Release Number) — версия шины USB (20h) |
61h (8 бит) |
FLADJ (Frame Length Adjustment Register) — регистр подстройки |
|
длительности кадра, используются биты [5:0]. Длительность кадра в битовых |
|
интервалах HS определяется по формуле 59488+16× FLADJ, по умолчанию |
|
FLADJ=20h (60 000 bt) |
62 63h (16 бит) |
PORTWAKECAP, регистр возможности генерации событий пробуждения |
|
для портов корневого хаба. Бит 0 — признак наличия данного регистра (0 — |
|
нет регистра), биты [15:1] — маски для портов с теми же номерами. |
|
На работу EHC регистр не влияет (это только информация для драйвера) |
EECP+0h |
USBLEGSUP (USB Legacy Support), регистр возможностей поддержки |
(32 бита) |
эмуляции старых устройств, адрес определяется в поле EECP регистра |
|
HCCPARAMS, отображенного на память. Назначение бит: |
|
Биты 31:25 — резерв; |
|
Бит 24 — HC OS Owned Semaphore, семафор запроса управления |
|
контроллером. ОС устанавливает в «1» как запрос, право считается |
|
предоставленным, когда BIOS установит в «0» бит 16; |
|
Биты [23:17] — резерв; |
|
Бит 16 — HC BIOS Owned Semaphore, семафор права управления |
|
контроллером. BIOS устанавливает в «1» как признак владения |
|
контроллером; |
|
Бит [15:8] — Next EHCI Extended Capability Pointer, указатель |
|
на следующий идентификатор расширенных возможностей; [7:0] |
|
Capability ID, идентификатор поддержки старых устройств (01h) |
EECP+4h |
USBLEGCTLSTS (USB Legacy Support Control and Status), регистр управления |
(32 бита) |
и состояния эмуляции. BIOS использует этот регистр для разрешения SMI |
|
по различным событиям и идентификации событий. Назначение бит: |
|
Бит 31 — SMI on BAR, прерывание SMI по смене базового адреса регистров |
|
EHC |
продолжение

Таблица 15.6 (продолжение)
Смещение Назначение (длина)
Бит 30 — SMI on PCI Command, прерывание SMI по записи в регистр команд конфигурационного пространства устройства PCI
Бит 29 — SMI on OS Ownership Change, прерывание SMI по смене состояния права управления для ОС Биты [28:22] — резерв
Бит 21 — SMI on Async Advance, прерывание SMI по установке бита
Async_Advance в регистре USBSTS
Бит 20 — SMI on Host System Error, прерывание SMI по системной ошибке EHC
Бит 19 — SMI on Frame List Rollover, прерывание SMI по полному обороту списка кадров
Бит 18 — SMI on Port Change Detect, прерывание SMI по смене состояния порта
Бит 17 — SMI on USB Error, прерывание SMI по ошибке USB
Бит 16 — SMI on USB Complete, прерывание SMI по завершению передачи Бит 15 — SMI on BAR Enable, разрешение прерывания SMI по смене базового адреса регистров EHC
Бит 14 — SMI on PCI Command Enable, разрешение прерывания SMI
по записи в регистр команд конфигурационного пространства устройства PCI
Бит 13 — SMI on OS Ownership Change Enable, разрешение прерывания SMI по смене состояния права управления для ОС Биты [12:6] — резерв
Бит 5 — SMI on Async Advance Enable, разрешение прерывания SMI по установке бита Async_Advance в регистре USBSTS
Бит 4 — SMI on Host System Error Enable, разрешение прерывания SMI по системной ошибке EHC
Бит 3 — SMI on Frame List Rollover Enable, разрешение прерывания SMI по полному обороту списка кадров
Бит 2 — SMI on Port Change Enable, разрешение прерывания SMI по смене состояния порта
Бит 1 — SMI on USB Error Enable, разрешение прерывания SMI по ошибке USB
Бит 0 — USB SMI Enable, разрешение прерывания SMI по завершению передачи
Таблица 15.7. Регистры описания структуры контроллера EHC
Смещение |
Назначение |
|
(длина) |
|
|
|
|
|
00h |
(8 бит) |
CAPLENGTH, длина набора регистров описания (определяет положение |
|
|
операционных регистров) |
01h |
(8 бит) |
Резерв |
02h |
(16 бит) |
HCIVERSION, номер версии интерфейса хост контроллера (0100h) |
04h |
(32 бита) |
HCSPARAMS, параметры структуры: |
|
|
Биты [31:24] — резерв |
|
|
Биты [23:20] — Debug Port Number, номер порта, являющегося отладочным |
|
|
(0 — нет такого) |
|
|
Биты 19:17 — резерв |
|
|
|

Смещение Назначение (длина)
Бит 16 — P_INDICATOR, признак поддержки управления индикаторами портов
Биты [15:12] — N_CC, число контроллеров компаньонов (если 0, то к контроллеру можно подключать только HS устройства)
Биты [11:8] — N_PCC, число портов у каждого контроллера компаньона
Бит 7 — Port Routing Rules, правило сопоставления портов контроллерам компаньоном: 0 — порты распределяются группами по N_PCC
по контроллерам с нарастающими номерами, 1 — распределение в соответствии с таблицей HCSP-PORTROUTE
Биты 6:5 — резерв
Бит 4 — PPC (Port Power Control), признак наличия управления питанием портов
Биты [3:0] — N_PORTS, число нисходящих портов (1–Fh)
08h (32 бита) HCCPARAMS, параметры свойств: Биты [31:16] — резерв.
Биты [15:8] — EECP (EHCI Extended Capabilities Pointer), указатель
на положение регистра USBLEGSUP в конфигурационном пространстве Биты [7:4] — Isochronous Scheduling Threshold, порог планирования изохронных передач. Если бит 7=0, то биты [6:4] определяют минимальную дистанцию (число микрокадров) от текущей позиции, на которой драйвер может менять дескрипторы изохронных передач. Единичное значение бита 7 означает, что контроллер способен удержать в своем кэше дескрипторы для целого кадра Бит 3 — резерв
Бит 2 — Asynchronous Schedule Park Capability, поддержка режима парковки для заголовков HS очередей асинхронного плана
Бит 1 — Programmable Frame List Flag, признак поддержки программируемого размера списка кадров (0 — размер только 1024 элемента)
Бит 0 — 64-bit Addressing Capability, способность использования 64 битной адресации памяти
0Ch (64 бита) HCSP-PORTROUTE, описание распределения портов по контроллерам компаньонам, массив 4 байтных номеров контроллера компаньона для каждого нисходящего порта корневого хаба. Вмещает описания для 15 портов (биты [3:0], формально относящиеся к нулевому порту, не используются)
Таблица 15.8. Операционные регистры контроллера EHC
Смещение |
Назначение |
(длина) |
|
|
|
00h |
USBCMD, регистр команд USB |
|
Биты [31:24] — резерв |
|
Биты [23:16] — Interrupt Threshold Control, минимальный интервал |
|
(в микрокадрах) генерации прерываний (125 мкс–64 мс). Допустимы |
|
значения 2^N, по умолчанию 08h (1 мс) |
|
Биты [15:12] — резерв |
|
Бит 11 — Asynchronous Schedule Park Mode Enable, разрешение режима |
|
парковки для заголовков HS очередей асинхронного плана (необязательно) |
|
Бит 10 — резерв |
продолжение