Поделиться через


Вызов функционального контроллера в системе WINDOWS USB Type-C

В этой статье описываются задачи, выполняемые изготовителем оборудования для контроллера функций с соединителем USB Type-C.

Важные API

Драйвер для контроллера функций информирует операционную систему об уровнях зарядки, поддерживаемых его разъемом USB Type-C, и уведомляет подсистему батареи, когда она может начать зарядку и максимальный объем текущего времени, который устройство может рисовать.

В этом разделе предполагается, что контроллер функции управляет одним соединителем (UFP) в любой момент времени.

1. Загрузка драйверов на стороне USB-устройства

Существует два драйвера, которые управляют операциями контроллера функции. Пара — это расширение класса функций USB, предоставляемое Корпорацией Майкрософт, и его клиентский драйвер. Расширение класса сообщает сведения, отправляемые драйвером клиента в операционную систему. Драйвер клиента взаимодействует с оборудованием с помощью аппаратных интерфейсов. См. раздел Драйверы USB-устройства в Windows.

драйвер контроллера функции 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()
    {
        ...
    })

    ...