Partager via


Pilote d’interface logicielle du connecteur USB Type-C® (UCSI)

Microsoft fournit un pilote conforme aux spécifications de l'interface logicielle du système USB Type-C® Connector (UCSI) pour un transport ACPI (Advanced Configuration and Power Interface). Si votre conception inclut un contrôleur incorporé avec le transport ACPI, implémentez UCSI dans le BIOS/EC de votre système et chargez le pilote UCSI intégré (UcmUcsiCx.sys et UcmUcsiAcpiClient.sys).

Si votre matériel compatible UCSI utilise un transport autre que ACPI, vous devez écrire un pilote client UCSI.

Pilotes pour prendre en charge les composants USB Type-C pour les systèmes avec des contrôleurs incorporés

Voici un exemple de système avec un contrôleur incorporé.

Diagramme des composants logiciels usb Type-C.

Le basculement de rôle USB est géré dans le microprogramme du système. La pile des pilotes du commutateur de rôle USB n’est pas chargée. Dans un autre système, la pile des pilotes peut ne pas être chargée, car le double rôle n’est pas pris en charge.

  • Pilotes pour périphériques USB

    Les pilotes côté périphérique USB servent la fonction/appareil/périphérique. L’extension de classe de contrôleur de fonction USB prend en charge le protocole de transfert de médias (MTP) et le chargement avec des chargeurs BC 1.2. Microsoft fournit des pilotes clients in-box pour les contrôleurs USB 3.0 et ChipIdea USB 2.0. Vous pouvez écrire un pilote client personnalisé pour votre contrôleur de fonction à l’aide d’interfaces de programmation du pilote client du contrôleur de fonction USB. Pour plus d’informations, consultez Développement de pilotes Windows pour les contrôleurs de fonction USB.

    Le fournisseur soC peut vous fournir le pilote de filtre inférieur de la fonction USB pour la détection du chargeur. Si vous utilisez le pilote client Synopsys USB 3.0 ou ChipIdea USB 2.0, vous pouvez implémenter votre propre pilote de filtre.

  • Pilotes côté hôte USB

    Les pilotes côté hôte USB sont un ensemble de pilotes qui fonctionnent avec les contrôleurs hôtes USB compatibles EHCI ou XHCI. Si le pilote de changement de rôle énumère le rôle hôte, les pilotes sont alors chargés. Si votre contrôleur hôte n’est pas conforme aux spécifications, vous pouvez écrire un pilote personnalisé à l’aide de l’interface de programmation de l’extension du contrôleur hôte USB. Pour plus d’informations, consultez Développement de pilotes Windows pour les contrôleurs hôtes USB.

  • Gestionnaire de connecteur USB

    Microsoft fournit un pilote in-box UCSI avec Windows (UcmUcsiCx.sys) qui implémente les fonctionnalités définies dans la spécification de l’interface logicielle système du connecteur USB Type-C. La spécification décrit les fonctionnalités de l’UCSI. Il explique les registres et les structures de données, pour les concepteurs de composants matériels, les générateurs de systèmes et les développeurs de pilotes de périphérique.

    Ce pilote est destiné aux systèmes avec des contrôleurs incorporés. Ce pilote est un client du pilote d’extension de classe du gestionnaire de connecteur USB fourni par Microsoft (Ucmcx.sys). Le pilote gère les tâches telles que le lancement d’une demande au microprogramme pour modifier les données ou les rôles d’alimentation et obtenir des informations nécessaires pour fournir des messages de dépannage à l’utilisateur.

Commandes UCSI requises par Windows

Consultez la spécification UCSI pour les commandes requises dans toutes les implémentations UCSI.

Outre les commandes marquées comme obligatoires, Windows requiert ces commandes :

  • OBTENIR_MODES_ALTERNATIFS
  • GET_CAM_SUPPORTED
  • GET_PDOS
  • SET_NOTIFICATION_ENABLE : le système ou le contrôleur doit prendre en charge les notifications suivantes dans SET_NOTIFICATION_ENABLE :
    • Modifications des fonctionnalités du fournisseur prises en charge
    • Changement de niveau de puissance négocié
  • GET_CONNECTOR_STATUS : le système ou le contrôleur doit prendre en charge les modifications d’état du connecteur dans GET_CONNECTOR_STATUS :
    • Modifications des fonctionnalités du fournisseur prises en charge
    • Changement de niveau de puissance négocié

Pour plus d’informations, consultez Implémentation Intel BIOS de l’UCSI.

UCM-UCSI dispositif ACPI pour UCSI 2.0 et versions ultérieures

À compter de Windows 11, version 22H2 Mise à jour de septembre, les pilotes de périphériques ACPI Windows UCM-UCSI prennent en charge la spécification UCSI version 2.0 et 2.1. La spécification UCSI 2.0 inclut des modifications majeures dans le mappage de mémoire de ses structures de données, comme défini dans la Table 3-1 des Structures de données de la spécification UCSI.

Pour maintenir la compatibilité descendante, Windows exige que le PPM UCSI de la version 2.0 de la spécification ou une version ultérieure implémente la fonction de _DSM suivante sous l'UCM-UCSI appareil ACPI dans le microprogramme ACPI et retourne une valeur différente de zéro pour indiquer que l’OPM UCSI doit suivre la version de spécification UCSI signalée.

  • Arg0 : UUID = 6F8398C2-7CA4-11E4-AD36-631042B5008F
  • Arg1 : ID de révision = 0
  • Arg2 : Index de fonction = 5
  • Arg3 : Package vide (non utilisé)

Valeur de retour :

Élément Type d’objet Descriptif
UsePpmReportedUcsiVersion Entier à 32 bits 0x00000000 (valeur par défaut) : si la structure telle que définie dans la VERSIONspécification UCSI Table 3-1 Structures de données a la valeur 2.0 ou ultérieure, UCSI OPM suit toujours la spécification UCSI 1.2. Dans le cas contraire, l’OPM UCSI suit la spécification UCSI en fonction de la valeur de la structure VERSION.

Remarque

Pour les appareils ACPI UCM-UCSI, cette fonction est nouvelle dans le cadre d'une méthode _DSM existante. D’autres fonctions de cette méthode _DSM doivent avoir été implémentées conformément à l’implémentation Intel BIOS du document UCSI . La fonction 0, qui retourne un masque de bits de toutes les fonctions prises en charge, doit également être mise à jour en conséquence.

Exemple de flux pour UCSI

Les exemples de cette section décrivent l’interaction entre le matériel et le microprogramme USB Type-C, le pilote UCSI et le système d’exploitation.

Détection de rôle DRP

  1. USB Type-C matériel/microprogramme détecte un événement d’attachement d’appareil. Le système DRP système Windows 10 devient initialement le rôle UFP.

    1. Le microprogramme envoie une notification indiquant une modification dans le connecteur.
    2. Le pilote UCSI envoie une demande de GET_CONNECTOR_STATUS.
    3. Le microprogramme répond que son état de connexion = 1 et le type de partenaire du connecteur = DFP.
  2. Les pilotes de la pile de fonctions USB répondent à l’énumération.

  3. L’extension de classe du gestionnaire de connecteur USB reconnaît que la pile de fonctions USB est chargée, de sorte que le système est dans un état incorrect. Il indique au pilote UCSI d’envoyer des requêtes de Définir le rôle d'opération USB et Définir le rôle de direction de l'alimentation au microprogramme.

  4. USB Type-C matériel/microprogramme lance l’opération d’échange de rôle avec la DFP.

Détection d’une erreur d’incompatibilité du chargeur

  1. Le matériel/micrologiciel USB Type-C détecte qu’un chargeur est connecté et parvient à établir un contrat d’alimentation par défaut. Il observe également que le chargeur ne fournit pas suffisamment de puissance au système.

  2. USB Type-C définit le bit de chargement lent dans le firmware/matériel.

    1. Le microprogramme envoie une notification indiquant une modification dans le connecteur.
    2. Le pilote UCSI envoie une demande de GET_CONNECTOR_STATUS.
    3. Le microprogramme répond avec l’état de connexion = 1, le type de partenaire du connecteur = DFPet l’état de chargement de la batterie = Slow/Trickle.
  3. L’extension de classe du gestionnaire de connecteur USB envoie une notification à l’interface utilisateur pour afficher le message de résolution des problèmes d’incompatibilité du chargeur.

Guide pratique pour tester UCSI

Il existe de nombreuses façons de tester votre implémentation UCSI. Pour tester des commandes individuelles dans votre implémentation UCSI BIOS/EC, utilisez UCSIControl.exe, qui est fourni dans le package logiciel MICROSOFT USB Test Tool (MUTT). Pour tester votre implémentation UCSI complète, utilisez les tests UCSI qui se trouvent dans le Kit de laboratoire matériel Windows (HLK) et les étapes décrites dans les procédures d’interopérabilité manuellesType-C.

UCSIControl.exe

Vous pouvez tester des commandes individuelles dans votre implémentation UCSI BIOS/EC à l’aide de UCSIControl.exe. Cet outil vous permet d’envoyer des commandes UCSI au microprogramme via le pilote UCSI. Le pilote doit être chargé et fonctionner. Vous disposez également de l’interface de test pour le pilote activé. Par défaut, cette interface n’est pas activée pour empêcher son accès aux utilisateurs non autorisés sur un système de vente au détail.

  1. Recherchez le nœud d’appareil dans Device Manager (devmgmt.msc) nommé Gestionnaire de connecteur USB UCSI. Le nœud se trouve sous la catégorie contrôleurs de bus série universel .

  2. Sélectionnez et maintenez la touche enfoncée ou cliquez avec le bouton droit sur l’appareil. Sélectionnez Propriétés et ouvrez l’onglet Détails .

  3. Sélectionnez Chemin d’accès à l’instance de l’appareil dans le menu déroulant et notez la valeur de cette propriété.

  4. Ouvrez l’Éditeur du Registre (regedit.exe).

  5. Accédez au chemin d’accès de l’instance de l’appareil sous cette clé.

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

  6. Créez une valeur DWORD nommée TestInterfaceEnabled et définissez la valeur sur 0x1.

  7. Pour redémarrer l’appareil, sur le nœud de l’appareil dans Device Manager, sélectionnez Désactiver, puis Activez. Vous pouvez également redémarrer le PC.

Vous pouvez afficher l’aide en exécutant UcsiControl.exe / ?.

Voici les commandes courantes :

Commande UCSI commande UcsiControl.exe
Réinitialisation du PPM UcsiControl.exe Envoyer 0 1
Réinitialisation du connecteur Réinitialisation logicielle : UcsiControl.exe envoyer 0 10003

Réinitialisation en dur : UcsiControl.exe Envoyer 0 810003
Activer la notification Toutes les notifications : UcsiControl.exe Envoyer 0 ffff0005

Fin de la commande uniquement : UcsiControl.exe Envoyer 0 00010005

Aucune notification : UcsiControl.exe envoyer 0 00000005
Obtenir la fonctionnalité UcsiControl.exe Envoyer 0 6
Obtenir la fonctionnalité du connecteur UcsiControl.exe Envoyer 0 10007
Définir UOM DFP : UcsiControl.exe Send 0 810008

UFP : UcsiControl.exe envoyer 0 1010008

DRP : UcsiControl.exe envoyer 0 2010008
Définir l’UOR DFP : UcsiControl.exe Envoyez 0 810009

UFP : UcsiControl.exe envoyer 0 1010009

Accepter : UcsiControl.exe envoyer 0 2010009
Définir le PDR Fournisseur : UcsiControl.exe Envoyer 0 81000B

Consommateur : UcsiControl.exe Envoyer 0 101000B

Accepter : UcsiControl.exe Envoyer 0 201000B
Obtenir des PDO Source locale : UcsiControl.exe envoyer 7 00010010

Récepteur local : UcsiControl.exe Envoyer 3 00010010

Source distante : UcsiControl.exe envoyer 7 00810010

Récepteur distant : UcsiControl.exe envoyer 3 00810010
Obtenir l’état du connecteur UcsiControl.exe Envoyer 0 010012
Obtenir l’état d’erreur UcsiControl.exe Envoyer 0 13