Share via


Aufrufen des Funktionscontrollers auf einem USB-Typ-C-Windows-System

In diesem Artikel werden OEM-Bring up-Aufgaben für einen Funktionscontroller beschrieben, der über einen USB-Typ-C-Anschluss verfügt.

Wichtige APIs

Der Treiber für den Funktionscontroller informiert das Betriebssystem über die Ladestufen, die sein USB-Typ-C-Anschluss unterstützt, und benachrichtigt das Batteriesubsystem, wenn es mit dem Laden beginnen kann und die maximale Strommenge, die das Gerät ziehen kann.

In diesem Thema wird davon ausgegangen, dass der Funktionscontroller einen einzelnen Connector (UFP) zu einem bestimmten Zeitpunkt verwaltet.

1. Laden Sie die USB-geräteseitigen Treiber

Es gibt zwei Treiber, die die Vorgänge eines Funktionscontrollers verwalten. Das Paar ist die von Microsoft bereitgestellte USB-Funktionsklassenerweiterung und deren Clienttreiber. Die Klassenerweiterung meldet Informationen, die vom Clienttreiber an das Betriebssystem gesendet wurden. Der Clienttreiber kommuniziert über Hardwareschnittstellen mit der Hardware. Weitere Informationen finden Sie unter USB-Gerätetreiber in Windows.

USB-Funktionscontrollertreiber.

  • Wenn Ihr System ChipIdea- und Synopsys-Controller verwendet.

    1. Laden Sie die im Lieferumfang von Microsoft bereitgestellten Clienttreiber für ChipIdea- und Synopsys-Controller.
    2. Schreiben Sie einen niedrigeren Filtertreiber, der An-/Ablöseereignisse erhält, wenn ein Ladegerät angeschlossen ist. Der Treiber bestimmt den Typ des Ladegeräts und die Konfigurationseigenschaften. Es kann auch USB-Ladeanschlüsse gemäß der BC1.2-Spezifikation erkennen. Die Ladeinformationen werden an die Klassenerweiterung übergeben, sodass sie sie an den Abrechnungstreiber (CAD.sys) melden kann. Weitere Informationen finden Sie unter USB-Filtertreiber zur Unterstützung proprietärer Ladegeräte.
  • Wenn Ihr System einen benutzerdefinierten Controller verwendet, schreiben Sie einen Clienttreiber. Die BC1.2-Erkennungslogik wird im Clienttreiber implementiert. Weitere Informationen finden Sie unter

    Referenz zur Programmierung des USB-Funktionscontroller-Clienttreibers

    Entwickeln von Windows-Treibern für USB-Funktionscontroller

2. Ändern Sie system ACPI, um dem Funktionscontrollertreiber anzugeben, dass es sich bei dem Anschluss um einen USB-Typ-C-Anschluss handelt.

Dies erfolgt über eine ACPI-Methode, die in der ACPI 6.0-Spezifikation definiert ist.

_UPC (USB Port Capabilities)

Verwenden Sie die in ACPI 6.0 definierten neuen Werte, um den richtigen Typ des USB-Typ-C-Anschlusses anzugeben, z. B. "Typ-C USB2" und "Typ-C USB2 und SS mit Switch". Der Funktionstreiber kommuniziert diese Informationen an CAD.sys, sodass er usb Typ-C-spezifische Schiedslogik verwendet, um eine geeignete Ladequelle zu ermitteln.

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()
    {
        ...
    })

    ...