Dela via


USB Type-C® connector system software interface (UCSI) drivrutin

Microsoft tillhandahåller en specifikationskompatibel drivrutin för USB Type-C® Connector System Software Interface (UCSI) för en ACPI-transport (Advanced Configuration and Power Interface). Om din design innehåller en inbäddad styrenhet med ACPI-transport implementerar du UCSI i systemets BIOS/EC och läser in den inbyggda UCSI-drivrutinen (UcmUcsiCx.sys och UcmUcsiAcpiClient.sys).

Om din UCSI-kompatibla maskinvara använder en annan transport än ACPI måste du skriva en UCSI-klientdrivrutin.

Drivrutiner som stöder USB-Type-C-komponenter för system med inbäddade styrenheter

Här är ett exempel på ett system med en inbäddad styrenhet.

Diagram över USB-Type-C programvarukomponenter.

USB-rollväxling hanteras i systemets inbyggda programvara. Drivrutinsstacken för USB Role Switch har inte lästs in. I ett annat system kanske drivrutinsstacken inte läses in eftersom dubbla funktioner inte stöds.

  • USB-drivrutiner på enhetssidan

    USB-drivrutinerna på enhetssidan betjänar funktionen/enheten/kringutrustningen. USB-funktionskontrollantens klasstillägg stöder Media Transfer Protocol (MTP) och laddning med BC 1.2-laddare. Microsoft tillhandahåller inbyggda klientdrivrutiner för Synopsys USB 3.0- och ChipIdea USB 2.0-styrenheter. Du kan skriva en anpassad klientdrivrutin för funktionsstyrenheten med hjälp av programmeringsgränssnitt för USB-funktionskontrollantklientdrivrutiner. Mer information finns i Utveckla Windows-drivrutiner för USB-funktionsstyrenheter.

    SoC-leverantören kan ge dig usb-funktionens lägre filterdrivrutin för laddaridentifiering. Om du använder den inbyggda Synopsys USB 3.0- eller ChipIdea USB 2.0-klientdrivrutinen kan du implementera din egen filterdrivrutin.

  • USB-drivrutiner på värdsidan

    USB-drivrutinerna på värdsidan är en uppsättning drivrutiner som fungerar med EHCI- eller XHCI-kompatibla USB-värdstyrenheter. Om rollbytesdrivrutinen räknar upp värdrollen läses drivrutinerna in. Om värdstyrenheten inte är specifikationskompatibel kan du skriva en anpassad drivrutin med hjälp av programmeringsgränssnittet för USB-värdstyrenhetstillägg. Mer information finns i Utveckla Windows-drivrutiner för USB-värdstyrenheter.

  • USB-anslutningshanteraren

    Microsoft tillhandahåller en inbyggd UCSI-drivrutin med Windows (UcmUcsiCx.sys) som implementerar de funktioner som definieras i specifikationen för USB-Type-C-anslutningssystemets programvarugränssnitt. Specifikationen beskriver funktionerna i UCSI. Den förklarar register och datastrukturer för maskinvarukomponentdesigners, systembyggare och enhetsdrivrutinsutvecklare.

    Den här drivrutinen är avsedd för system med inbäddade styrenheter. Den här drivrutinen är en klient till den Microsoft-tillhandahållna drivrutinen för USB-anslutningshanterarens klasstillägg (Ucmcx.sys). Drivrutinen hanterar uppgifter som att initiera en begäran till den inbyggda programvaran för att ändra data- eller effektroller och få information som behövs för att tillhandahålla felsökningsmeddelanden till användaren.

UCSI-kommandon som krävs av Windows

Se UCSI-specifikationen för kommandon som krävs i alla UCSI-implementeringar.

Förutom de kommandon som har markerats som Obligatoriska kräver Windows följande kommandon:

  • FÅ_ALTERNATIVA_LÄGEN
  • GET_CAM_SUPPORTED
  • GET_PDOS
  • SET_NOTIFICATION_ENABLE: Systemet eller kontrollanten måste ha stöd för följande meddelanden i SET_NOTIFICATION_ENABLE:
    • Ändringar i stödfunktioner för leverantörer
    • Förhandlad ändring av energinivå
  • GET_CONNECTOR_STATUS: Systemet eller kontrollanten måste ha stöd för dessa ändringar av anslutningstjänstens status i GET_CONNECTOR_STATUS:
    • Ändringar i stödfunktioner för leverantörer
    • Förhandlad ändring av energinivå

Mer information finns i Intel BIOS-implementering av UCSI.

UCM-UCSI ACPI-enhet för UCSI 2.0 och senare

Från och med Windows 11 version 22H2 September Update stöder Windows UCM-UCSI ACPI-enhetsdrivrutinerna UCSI-specifikation version 2.0 och 2.1. UCSI-specifikationen 2.0 har icke-bakåtkompatibla ändringar i minnesmappningen av sina datastrukturer enligt definitionen i UCSI-specifikation Tabell 3–1 Datastrukturer.

För att upprätthålla bakåtkompatibiliteten kräver Windows UCSI PPM för specifikation version 2.0 eller senare för att implementera följande _DSM funktion under UCM-UCSI ACPI-enheten i ACPI-inbyggd programvara och returnera ett värde som inte är noll för att indikera att UCSI OPM ska följa den rapporterade UCSI-specifikationsversionen.

  • Arg0: UUID = 6F8398C2-7CA4-11E4-AD36-631042B5008F
  • Arg1: Revisions-ID = 0
  • Arg2: Funktionsindex = 5
  • Arg3: Tomt paket (används inte)

Returvärde:

Komponent Objekttyp Beskrivning
UsePpmReportedUcsiVersion Heltal (32-bitars) 0x00000000 (standard): Om VERSION strukturen enligt definitionen i UCSI-specifikation tabell 3-1 Datastrukturer har värdet 2,0 eller högre följer UCSI OPM fortfarande UCSI-specifikation 1.2. Annars följer UCSI OPM UCSI-specifikationen enligt värdet i VERSION strukturen.

Anmärkning

För UCM-UCSI ACPI-enheter är den här funktionen ny i en befintlig _DSM-metod. Andra funktioner i den här _DSM metoden bör ha implementerats enligt Intel BIOS-implementeringen av UCSI-dokumentet . Funktion 0, som returnerar en bitmask av alla funktioner som stöds, bör också uppdateras i enlighet med detta.

Exempelflöde för UCSI

Exemplen i det här avsnittet beskriver interaktionen mellan USB-Type-C maskinvara/inbyggd programvara, UCSI-drivrutin och operativsystemet.

Identifiering av DRP-rollen

  1. USB-Type-C maskinvara/inbyggd programvara identifierar en enhetsanslutningshändelse. Windows 10-systemets DRP-system blir till en början UFP-rollen.

    1. Den inbyggda programvaran skickar ett meddelande som anger en ändring i kontakten.
    2. UCSI-drivrutinen skickar en GET_CONNECTOR_STATUS begäran.
    3. Den inbyggda programvaran svarar att Anslutningsstatus = 1 och Anslutningspartnertyp = DFP.
  2. Drivrutinerna i USB-funktionsstacken svarar på uppräkningen.

  3. Klasstillägget för USB-anslutningshanteraren identifierar att USB-funktionsstacken är inläst, så att systemet är i fel tillstånd. Den instruerar UCSI-drivrutinen att skicka Ange USB-driftsroll och Ange strömriktningens roll till den inbyggda programvaran.

  4. USB-Type-C maskinvara/inbyggd programvara initierar rollbytesåtgärden med DFP.

Identifiera ett feltillstånd för matchningsfel för laddaren

  1. USB Type-C maskinvara/firmware upptäcker att en laddare är ansluten och förhandlar fram ett standardavtal för strömförsörjning. Den observerar också att laddaren inte ger tillräckligt med ström till systemet.

  2. USB-Type-C maskinvara/inbyggd programvara anger den långsamma laddningsbiten.

    1. Den inbyggda programvaran skickar ett meddelande som anger en ändring i kontakten.
    2. UCSI-drivrutinen skickar en GET_CONNECTOR_STATUS begäran.
    3. Den inbyggda programvaran svarar med Connect Status = 1, Connector Partner Type = DFPoch Battery Charging Status = Slow/Trickle.
  3. Klasstillägget för USB-anslutningshanteraren skickar ett meddelande till användargränssnittet för att visa felsökningsmeddelandet om felmatchning av laddaren.

Så här testar du UCSI

Det finns många sätt att testa din UCSI-implementering. Om du vill testa enskilda kommandon i din UCSI BIOS/EC-implementering använder du UCSIControl.exe, som finns i microsoft USB Test Tool -programvarupaketet (MUTT). Om du vill testa din fullständiga UCSI-implementering använder du både UCSI-testerna som finns i Windows Hardware Lab Kit (HLK) och stegen i Type-C Manuella interop-procedurer.

UCSIControl.exe

Du kan testa enskilda kommandon i din UCSI BIOS/EC-implementering med hjälp av UCSIControl.exe. Med det här verktyget kan du skicka UCSI-kommandon till den inbyggda programvaran via UCSI-drivrutinen. Det krävs att drivrutinen är inläst och körs. Du har också testgränssnittet för drivrutinen aktiverat. Som standard är det här gränssnittet inte aktiverat för att förhindra att det är tillgängligt för obehöriga användare i ett detaljhandelssystem.

  1. Leta upp enhetsnoden i Enhetshanteraren (devmgmt.msc) med namnet UCSI USB Connector Manager. Noden är under kategorin Universal Serial Bus-styrenheter .

  2. Välj och håll eller högerklicka på enheten. Välj Egenskaper och öppna fliken Information .

  3. Välj Sökväg för enhetsinstans i den nedrullningsbara menyn och anteckna egenskapsvärdet.

  4. Öppna Registereditorn (regedit.exe).

  5. Gå till enhetsinstansens sökväg under den här nyckeln.

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\<device-instance-path>\Device Parameters

  6. Skapa ett DWORD-värde med namnet TestInterfaceEnabled och ange värdet till 0x1.

  7. Om du vill starta om enheten går du till enhetsnoden i Enhetshanteraren, väljer Inaktivera och väljer sedan Aktivera. Du kan också starta om datorn.

Du kan visa hjälpen genom att skriva UcsiControl.exe /?.

Här är de vanliga kommandona:

UCSI-kommando UcsiControl.exe kommando
PPM-återställning UcsiControl.exe Skicka 0 1
Återställning av kontakt Mjuk återställning: UcsiControl.exe Skicka 0 10003

Hård återställning: UcsiControl.exe Skicka 0 810003
Aktivera notifikationer Alla meddelanden: UcsiControl.exe Skicka 0 ffff0005

Endast kommandoslutförande: UcsiControl.exe Skicka 0 00010005

Inget meddelande: UcsiControl.exe Skicka 0 00000005
Hämta kapacitet UcsiControl.exe Skicka 0 6
Hämta anslutningskapacitet UcsiControl.exe Skicka 0 10007
Ange UOM DFP: UcsiControl.exe Skicka 0 810008

UFP: UcsiControl.exe Skicka 0 1010008

DRP: UcsiControl.exe Skicka 0 2010008
Ange UOR DFP: UcsiControl.exe Skicka 0 810009

UFP: UcsiControl.exe Skicka 0 1010009

Acceptera: UcsiControl.exe Skicka 0 2010009
Ange PDR Provider: UcsiControl.exe Skicka 0 81000B

Konsument: UcsiControl.exe Skicka 0 101000B

Acceptera: UcsiControl.exe Skicka 0 201000B
Hämta PDOs Lokal källa: UcsiControl.exe Skicka 7 00010010

Lokal slutpunkt: UcsiControl.exe Skicka 3 00010010

Fjärrkälla: UcsiControl.exe Skicka 7 00810010

Fjärrmottagare: UcsiControl.exe Skicka 3 00810010
Hämta anslutningsstatus UcsiControl.exe Skicka 0 010012
Erhåll felstatus UcsiControl.exe Skicka 0 13