Драйвер системного программного интерфейса соединителя USB Type-C® (UCSI)
Корпорация Майкрософт предоставляет драйвер системного программного интерфейса соединителя USB Type-C® (UCSI), совместимого со спецификациями, для транспорта ACPI. Если ваша конструкция включает встроенный контроллер с транспортом ACPI, реализуйте UCSI в BIOS/EC системы и загрузите встроенный драйвер UCSI (UcmUcsiCx.sys и UcmUcsiAcpiClient.sys).
Если оборудование, совместимое с UCSI, использует транспорт, отличный от ACPI, необходимо написать драйвер клиента UCSI.
Драйверы для поддержки компонентов USB Type-C для систем со встроенными контроллерами
Ниже приведен пример системы со встроенным контроллером.
В предыдущем примере переключение ролей USB обрабатывается во встроенном ПО системы, а стек драйверов коммутатора ролей USB не загружается. В другой системе стек драйверов может не загружаться, так как двойная роль не поддерживается.
На предыдущем рисунке:
Драйверы на стороне USB-устройства
Usb-драйверы на стороне устройства обслуживют функцию, устройство или периферийное устройство. Расширение класса контроллера функции USB поддерживает MTP (протокол передачи мультимедиа) и зарядку с помощью зарядных устройств BC 1.2. Корпорация Майкрософт предоставляет встроенные клиентские драйверы для контроллеров Synopsys USB 3.0 и ChipIdea USB 2.0. Вы можете написать пользовательский драйвер клиента для контроллера функций с помощью интерфейсов программирования клиентских драйверов контроллера функций USB. Дополнительные сведения см. в статье Разработка драйверов Windows для контроллеров функций USB.
Поставщик SoC может предоставить драйвер нижнего фильтра функции USB для обнаружения зарядного устройства. Вы можете реализовать собственный драйвер фильтра, если используете встроенный драйвер synopsys USB 3.0 или ChipIdea USB 2.0.
Драйверы на стороне узла USB
Драйверы USB на стороне узла — это набор драйверов, которые работают с контроллерами USB-узла, совместимыми с EHCI или XHCI. Драйверы загружаются, если драйвер переключения ролей перечисляет роль узла. Если контроллер узла не соответствует спецификациям, можно написать пользовательский драйвер с помощью программного интерфейса расширения USB-контроллера (UCX). Дополнительные сведения см. в статье Разработка драйверов Windows для USB-контроллеров узлов.
Не все классы USB-устройств поддерживаются в Windows 10 Mobile.
Диспетчер USB-соединителей
Корпорация Майкрософт предоставляет встроенный драйвер UCSI с Windows (UcmUcsiCx.sys), который реализует функции, определенные в спецификации программного интерфейса системы соединителя USB Type-C. В спецификации описываются возможности UCSI, а также описаны регистры и структуры данных для разработчиков аппаратных компонентов, сборщиков систем и разработчиков драйверов устройств.
Этот драйвер предназначен для систем со встроенными контроллерами. Этот драйвер является клиентом для предоставленного Корпорацией Майкрософт драйвера расширения класса диспетчера USB-соединителей (Ucmcx.sys). Драйвер обрабатывает такие задачи, как инициирование запроса к встроенному ПО для изменения данных или ролей питания и получение сведений, необходимых для предоставления сообщений об устранении неполадок пользователю.
Команды UCSI, необходимые для Windows
Команды, необходимые во всех реализациях UCSI, см. в спецификации UCSI.
В дополнение к командам, помеченным как Обязательный, Для Windows требуются следующие команды:
- GET_ALTERNATE_MODES
- GET_CAM_SUPPORTED
- GET_PDOS
- SET_NOTIFICATION_ENABLE. Система или контроллер должны поддерживать следующие уведомления в SET_NOTIFICATION_ENABLE:
- Изменение поддерживаемых возможностей поставщика
- Согласованное изменение уровня питания
- GET_CONNECTOR_STATUS. Система или контроллер должны поддерживать следующие изменения состояния соединителя в GET_CONNECTOR_STATUS:
- Изменение поддерживаемых возможностей поставщика
- Согласованное изменение уровня питания
Сведения о задачах, необходимых для реализации UCSI в BIOS, см. в разделе Реализация UCSI в Intel BIOS.
Устройство ACPI UCM-UCSI для UCSI 2.0 и более поздней версии
Начиная с Windows 11 версии 22H2 с обновлением за сентябрь, драйверы устройств WINDOWS UCM-UCSI ACPI поддерживают спецификации UCSI версии 2.0 и 2.1. Спецификация UCSI 2.0 содержит критические изменения в сопоставлении памяти своих структур данных, как определено в спецификации UCSI Таблица 3–1 Структуры данных. Для обеспечения обратной совместимости Windows требуется UCSI PPM спецификации версии 2.0 или более поздней, чтобы реализовать следующую функцию _DSM на устройстве UCM-UCSI ACPI в встроенном ПО ACPI и вернуть ненулевое значение, указывающее, что UCSI OPM должна соответствовать указанной версии спецификации UCSI.
- Arg0: UUID = 6F8398C2-7CA4-11E4-AD36-631042B5008F
- Arg1: идентификатор редакции = 0
- Arg2: индекс функции = 5
- Arg3: пустой пакет (не используется)
Возвращаемое значение:
Элемент | Тип объекта | Описание: |
---|---|---|
UsePpmReportedUcsiVersion | Целое число (32-разрядная версия) | 0x00000000 (по умолчанию): если VERSION структура, определенная в спецификации UCSI Таблица 3–1 Структур данных, имеет значение 2,0 или выше, то UCSI OPM по-прежнему соответствует спецификации UCSI 1.2. В противном случае UCSI OPM следует спецификации UCSI согласно значению VERSION в структуре. |
Примечание
Для устройств ACPI UCM-UCSI это новая функция в существующем методе _DSM. Другие функции этого метода _DSM должны были быть реализованы в рамках реализации intel BIOS документа UCSI . Функция 0, которая возвращает битовую маску всех поддерживаемых функций, также должна быть обновлена соответствующим образом.
Пример потока для UCSI
В примерах, приведенных в этом разделе, описывается взаимодействие между оборудованием и встроенным ПО USB Type-C, драйвером UCSI и операционной системой.
Обнаружение роли DRP
- Оборудование и встроенное ПО USB Type-C обнаруживает событие подключения устройства, и система DRP Windows 10 изначально становится ролью UFP.
- Встроенное ПО отправляет уведомление об изменении соединителя.
- Драйвер UCSI отправляет запрос GET_CONNECTOR_STATUS.
- Встроенное ПО отвечает, что состояние подключения = 1, а тип партнера соединителя — DFP.
- Драйверы в стеке функций USB реагируют на перечисление .
- Расширение класса диспетчера USB-соединителей распознает, что стек функций USB загружен и, следовательно, система находится в неправильном состоянии. Он сообщает драйверу UCSI отправлять запросы Set USB Operation Role и Set Power Direction Role во встроенное ПО.
- Оборудование или встроенное ПО USB Type-C инициирует операцию переключения ролей с помощью DFP.
Обнаружение ошибки несоответствия зарядного устройства
Usb Type-C оборудование или встроенное ПО обнаруживает, что зарядное устройство подключено, и согласовывает контракт на питание по умолчанию. Он также отмечает, что зарядное устройство не обеспечивает достаточную мощность системы.
Оборудование и встроенное ПО USB Type-C задает разрядку медленной зарядки.
- Встроенное ПО отправляет уведомление об изменении соединителя.
- Драйвер UCSI отправляет запрос GET_CONNECTOR_STATUS.
- Встроенное ПО отвечает состоянием подключения = 1, тип партнера соединителя = DFP и состоянием зарядки батареи = медленный/струйный.
Расширение класса диспетчера USB-соединителей отправляет уведомление в пользовательский интерфейс для отображения сообщения об устранении неполадок с несоответствием зарядного устройства.
Тестирование UCSI
Существует множество способов тестирования реализации UCSI. Чтобы протестировать отдельные команды в реализации BIOS/EC UCSI, используйте UCSIControl.exe, которая предоставляется в пакете программного обеспечения MUTT. Чтобы проверить полную реализацию UCSI, используйте как тесты UCSI, которые можно найти в комплекте лабораторий оборудования Windows (HLK), так и шаги, описанные в процедурах ручного взаимодействия Type-C.
UCSIControl.exe
Вы можете протестировать отдельные команды в реализации BIOS/EC UCSI с помощью UCSIControl.exe. Это средство позволяет отправлять команды UCSI в встроенное ПО через драйвер UCSI. Для этого требуется загрузить и запустить драйвер, а также включить тестовый интерфейс для драйвера. По умолчанию этот интерфейс не включен, чтобы предотвратить доступ к нему для неавторизованных пользователей в розничной системе.
Найдите узел устройства в диспетчер устройств (devmgmt.msc) с именем UCSI USB Connector Manager. Узел относится к категории контроллеров универсальной последовательной шины .
Выберите и удерживайте (или щелкните правой кнопкой мыши) на устройстве, выберите Свойства и откройте вкладку Сведения .
Выберите Путь к экземпляру устройства в раскрывающемся списке и запишите значение свойства.
Откройте редактор реестра (regedit.exe).
Перейдите к пути к экземпляру устройства под этим ключом.
<HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\device-instance-path>\Device Parameters
Создайте значение DWORD с именем TestInterfaceEnabled и присвойте ей значение 0x1.
Перезапустите устройство, выбрав параметр Отключить на узле устройства в диспетчер устройств и выбрав Включить. Кроме того, можно перезагрузить компьютер.
Чтобы просмотреть справку, выполнитеUcsiControl.exe /?.
Ниже приведены распространенные команды.
Команда UCSI | команда UcsiControl.exe |
---|---|
Сброс PPM | UcsiControl.exe Отправить 0 1 |
Сброс соединителя | Обратимый сброс: UcsiControl.exe Отправить 0 10003 Жесткий сброс: UcsiControl.exe Отправить 0 810003 |
Настройка включения уведомлений | Все уведомления: UcsiControl.exe Отправить 0 ffff0005 Только завершение команды: UcsiControl.exe Отправить 0 00010005 Нет уведомлений: UcsiControl.exe Отправить 0 00000005 |
Получение возможности | UcsiControl.exe Отправить 0 6 |
Получение возможности соединителя | UcsiControl.exe Отправить 0 10007 |
Настройка UOM | DFP: UcsiControl.exe Отправить 0 810008 UFP: UcsiControl.exe Отправить 0 1010008 DRP: UcsiControl.exe Отправить 0 2010008 |
Задать UOR | DFP: UcsiControl.exe Отправить 0 810009 UFP: UcsiControl.exe Отправить 0 1010009 Принять: UcsiControl.exe Отправить 0 2010009 |
Настройка PDR | Поставщик: UcsiControl.exe Отправить 0 81000B Потребитель: UcsiControl.exe Отправить 0 101000B Принять: UcsiControl.exe Отправить 0 201000B |
Получение PDO | Локальный источник: UcsiControl.exe Отправить 7 00010010 Локальный приемник: UcsiControl.exe Отправить 3 00010010 Удаленный источник: UcsiControl.exe Отправить 7 00810010 Удаленный приемник: UcsiControl.exe отправить 3 00810010 |
Получение состояния соединителя | UcsiControl.exe Отправить 0 010012 |
Получение состояния ошибки | UcsiControl.exe Отправить 0 13 |