Partager via


Plug-and-Play prise en charge de HID sur SPI

Cet article décrit la prise en charge plug-and-play pour les appareils qui prennent en charge HID sur le transport SPI.

Chargement du pilote

Windows charge le pilote de classe SPI HID en fonction d’une correspondance d’identificateur compatible entre un identificateur matériel et inf. L’identificateur est généré par l’interface ACPI (Advanced Configuration and Power Interface). L’identificateur matériel est généré pour le nœud d’appareil SPI dans ACPI. Tous les appareils compatibles HID SPI doivent exposer l’identificateur de compatibilité, en plus d’un identificateur matériel unique.

La spécification ACPI 5.0 prend en charge les appareils de classe HID. Les définitions ACPI pour HID SPI sont les suivantes.

Champ Valeur Objet ACPI Format Commentaires
ID du matériel Spécifique au fournisseur _CACHÉ Chaîne au format VVVVddddd (par exemple, MSFT0011) VendorID + DeviceID
Compatible ID PNP0C51 _CID Chaîne au format ACPIxxxx ou PNPxxxx CompatibleID
Subsystem Spécifique au fournisseur _SUB Chaîne au format VVVVssss (par exemple, MSFQ1234) SubVendorID + SubSystemID
Révision matérielle Spécifique au fournisseur _VRC 0xRRRR (révision de 2 octets) Numéro de révision matérielle
Paramètres de ressource actuels Spécifique au fournisseur _CRS Flux d’octets - SpiSerialBus pour l’accès à l’appareil.
- GpioInt pour les interruptions.
Méthode spécifique à l’appareil GUID {6e2ac436-0fcf-41af-a265-b32a220dcfab} _DSM Paquet Définit une structure qui contient des informations spécifiques à l’appareil.
Device Reset, méthode   _RST   Méthode de réinitialisation d’appareil compatible ACPI 6.0 7.3.25, à appeler par le système d’exploitation hôte en tant que FLDR ACPI.

Chaque appareil HID SPI doit fournir les champs obligatoires suivants :

  • ID du matériel
  • Compatible ID
  • Révision matérielle
  • Paramètres de ressource actuels
  • Méthode spécifique à l’appareil
  • Device Reset, méthode

Pour plus d’informations, reportez-vous à la spécification ACPI (Advanced Configuration and Power Interface) 6.0.

Voici un exemple d’ID matériels et d’ID compatibles pour un appareil HID SPI aléatoire. Ces détails sont basés sur un exemple d’appareil qui se signale lui-même en tant que hid avec une collection de niveau supérieur de la classe « spécifique au fournisseur ».

Advanced Configuration and Power Interface (ACPI) génère les ID matériels et les ID compatibles suivants pour charger le pilote de transport HID SPI :

Identificateurs matériels : identificateurs compatibles

ACPI\Vid_xxxx&Pid_yyyy&Rev_zzzz ;: ACPI\PNP0C51

ACPI\Vid_xxxxPid_yyyy ;:

ACPI\xxxxyyyy ;:

Dans l’exemple précédent, l’ID matériel a été généré à l’aide des valeurs extraites de la méthode ACPI _HID pour l’exemple d’appareil. L’ID compatible est généré à l’aide des valeurs extraites de la méthode ACPI _CID pour l’exemple d’appareil. L’ID compatible d’un fichier HID sur SPI doit toujours être PNP0C51 pour la version 1.0.

Notes

Si vous fournissez un INF, vous devez utiliser uniquement les identificateurs matériels dans la colonne de gauche du tableau précédent. (N’utilisez pas l’identificateur compatible dans la colonne de droite.)

L’ID matériel du nœud d’appareil client HID généré par le composant HIDClass.sys est le suivant :

Identificateur matériel : Identificateur compatible

HID\VEN_MSFT&DEV_0010&REV_0002&Col01 ;: N/A

-HID\VEN_MSFT&DEV_0010&Col01 HID\MSFT0010&Col01 ;: N/A

-HID\*MSFT0010Col01 : N/A

-HID_DEVICE_UP :FF00_U :0001 ;: N/A

-HID_DEVICE : N/A

L’ID matériel est généré par HIDClass.sys et est identique pour tous les transports. Cet identificateur est basé sur les valeurs passées à HIDClass.sys à partir de HIDSPI.SYS (extraites d’ACPI).

Séquence d’énumération d’appareil

Une fois qu’un pilote de périphérique HID SPI (HIDSPI.SYS) est chargé, il commence à communiquer avec l’appareil via le bus SPI. La première opération effectuée par le pilote est la séquence d’énumération de périphérique.

La liste suivante donne la séquence d’énumération. L’ordre de cette liste peut changer dans les versions ultérieures de Windows.

  1. Récupérez le code ASL (ACPI Source Language) pour l’appareil HID SPI à partir du BIOS système.

  2. Émettre une réinitialisation lancée par l’hôte sur l’appareil

    • Appeler la méthode _RST ACPI
    • L’appareil affirme l’interruption GPIO
    • L’hôte lit la réponse de réinitialisation de l’appareil
  3. Récupérer le descripteur HID à partir de l’appareil

    • L’hôte écrit une demande de descripteur HID
    • L’appareil affirme l’interruption GPIO
    • L’hôte lit la réponse du descripteur HID
  4. Récupérer le descripteur de rapport

    • L’hôte écrit la demande de descripteur de rapport
    • L’appareil affirme l’interruption GPIO
    • L’hôte lit la réponse du descripteur de rapport

Si l’hôte ne parvient pas à effectuer correctement l’une des étapes avec l’appareil, le pilote HIDSPI peut se charger avec la valeur d’erreur Code 10. L’hôte peut réessayer de réinitialiser l’appareil si aucune réponse n’est reçue, mais la logique de nouvelle tentative n’est pas garantie.

Opérations de rapport HID

Le tableau ci-dessous fournit une vue d’ensemble des opérations de rapport HID prises en charge par le protocole HID SPI, ainsi que des rapports d’entrée et de sortie utilisés pour effectuer l’opération.

Type de rapport HID Opération Type de rapport de sortie Type de rapport d’entrée
Rapport d’entrée GET 0x06
(Requête - contenu vide)
0x0B
(Réponse)
Rapport d’entrée SET
(Non pris en charge)
N/A N/A
Rapport d’entrée INTERROMPRE DANS N/A - Aucune demande 0x01
Rapport sur les fonctionnalités GET 0x04
(Requête - contenu vide)
0x05
(Réponse)
Rapport sur les fonctionnalités SET 0x03 0x09
(Accusé de réception - contenu vide)
Rapport de sortie GET
(Non pris en charge)
N/A N/A
Rapport de sortie SET 0x05 0x0A
(Accusé de réception - contenu vide)

Opérations de protocole

Opération Type de rapport de demande Type de rapport de réponse
Demande de descripteur d’appareil 0x01 0x7
Demande de descripteur de rapport 0x02 0x8
Demande de commande 0x07 0x4
Réinitialiser la réponse N/A 0x3

Voir aussi

LANGAGE SOURCE ACPI (ASL)