Вызов функционального контроллера в системе WINDOWS USB Type-C
В этой статье описываются задачи, выполняемые изготовителем оборудования для контроллера функций с соединителем USB Type-C.
Важные API
- Справочник по программированию драйвера клиента контроллера функции USB
- Драйвер фильтра USB для поддержки собственных зарядных устройств
Драйвер для контроллера функций информирует операционную систему об уровнях зарядки, поддерживаемых его разъемом USB Type-C, и уведомляет подсистему батареи, когда она может начать зарядку и максимальный объем текущего времени, который устройство может рисовать.
В этом разделе предполагается, что контроллер функции управляет одним соединителем (UFP) в любой момент времени.
1. Загрузка драйверов на стороне USB-устройства
Существует два драйвера, которые управляют операциями контроллера функции. Пара — это расширение класса функций USB, предоставляемое Корпорацией Майкрософт, и его клиентский драйвер. Расширение класса сообщает сведения, отправляемые драйвером клиента в операционную систему. Драйвер клиента взаимодействует с оборудованием с помощью аппаратных интерфейсов. См. раздел Драйверы USB-устройства в Windows.
Если в системе используются контроллеры ChipIdea и Synopsys.
- Загрузите встроенные клиентские драйверы корпорации Майкрософт для контроллеров ChipIdea и Synopsys.
- Напишите драйвер нижнего фильтра, который получает события подключения и отсоединения при подключении зарядного устройства. Драйвер определяет тип зарядного устройства и свойства конфигурации. Он также может обнаруживать usb-порты зарядки в соответствии со спецификацией BC1.2. Сведения о зарядке передаются в расширение класса, чтобы сообщить о ней драйверу арбитража зарядки (CAD.sys). Дополнительные сведения см. в разделе Драйвер фильтра USB для поддержки собственных зарядных устройств.
Если в системе используется пользовательский контроллер, напишите драйвер клиента. Логика обнаружения BC1.2 реализована в драйвере клиента. Дополнительные сведения см. в разделе:
Справочник по программированию драйвера клиента контроллера функции USB
2. Измените системный ACPI, чтобы указать драйверу контроллера функций, что соединитель является соединителем USB Type-C
Для этого используется метод ACPI, определенный в спецификации ACPI 6.0.
_UPC (USB Port Capabilities)
Используйте новые значения, определенные в ACPI 6.0, чтобы указать правильный тип соединителя USB Type-C, например Type-C USB2 и Type-C USB2 and SS with switch. Драйвер функции передает эти сведения CAD.sys, чтобы он использовал логику арбитража типа C USB для определения подходящего источника зарядки.
Device (UFN0)
{
...
Name (_UPC, Package()
{
0x1, // Connectable
0x9, // Type-C USB2 and Type-C USB2 and SS with switch
0x0, // Reserved
0x0 // Reserved
})
Name (_CRS, ResourceTemplate()
{
...
})
...