Condividi tramite


Plug and Play supporto per HID tramite SPI

Questo articolo descrive il supporto plug and play per i dispositivi che supportano HID sul trasporto SPI.

Caricamento driver

Windows carica il driver di classe HID SPI in base a una corrispondenza di identificatore compatibile tra un identificatore hardware e l'INF. L'identificatore viene generato da Advanced Configuration and Power Interface (ACPI). L'identificatore hardware viene generato per il nodo del dispositivo SPI in ACPI. Tutti i dispositivi compatibili con HID SPI devono esporre l'identificatore di compatibilità, oltre a un identificatore hardware univoco.

La specifica ACPI 5.0 include il supporto per i dispositivi della classe HID. le definizioni ACPI per HID SPI sono le seguenti.

Campo Valore Oggetto ACPI Formato Commenti
Hardware ID Fornitore specifico _NASCOSTO Stringa nel formato VVVVdddd (ad esempio MSFT0011) VendorID + DeviceID
ID compatibile PNP0C51 _CID Stringa nel formato ACPIxxxx o PNPxxxx CompatibileID
Subsystem Fornitore specifico _SUB Stringa nel formato VVVVssss (ad esempio MSFQ1234) SubVendorID + SubSystemID
Revisione hardware Fornitore specifico _HRV 0xRRRR (revisione 2byte) Numero di revisione hardware
Impostazioni delle risorse correnti Fornitore specifico _CRS Flusso di byte - SpiSerialBus per l'accesso al dispositivo.
- GpioInt per gli interruzioni.
Metodo specifico del dispositivo GUID {6e2ac436-0fcf-41af-a265-b32a220dcfab} _DSM Pacchetto Definisce una struttura contenente informazioni specifiche del dispositivo.
Metodo Device Reset   _RST   Metodo di reimpostazione del dispositivo conforme a ACPI 6.0 7.3.25, da chiamare dal sistema operativo host come ACPI FLDR.

Ogni dispositivo HID SPI deve fornire i campi obbligatori seguenti:

  • Hardware ID
  • ID compatibile
  • Revisione hardware
  • Impostazioni delle risorse correnti
  • Metodo specifico del dispositivo
  • Metodo Device Reset

Per altre informazioni, vedere la specifica Advanced Configuration and Power Interface (ACPI) 6.0.

Di seguito viene fornito un esempio di ID hardware e ID compatibili per un dispositivo HID SPI casuale. Questi dettagli si basano su un dispositivo di esempio che segnala se stesso come HID con una raccolta di livello superiore di classe "fornitore specifico".

Configurazione avanzata e Power Interface (ACPI) genera i seguenti ID hardware e ID compatibili per caricare il driver di trasporto SPI HID:

Identificatori hardware: identificatori compatibili

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

ACPI\Vid_xxxxPid_yyyy;:

ACPI\xxxxyyyyyy;:

Nell'esempio precedente l'ID hardware è stato generato usando i valori estratti dal metodo ACPI _HID per il dispositivo di esempio. L'ID compatibile viene generato usando i valori estratti dal metodo ACPI _CID per il dispositivo di esempio. L'ID compatibile per un HID su SPI deve essere sempre PNP0C51 per la versione 1.0.

Nota

Se si specifica un INF, è consigliabile usare solo gli identificatori hardware nella colonna sinistra della tabella precedente. Non usare l'identificatore compatibile nella colonna destra.

L'ID hardware per il nodo del dispositivo client HID generato dal componente HIDClass.sys è il seguente:

Identificatore hardware: identificatore compatibile

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 hardware viene generato da HIDClass.sys ed è identico per tutti i trasporti. Questo identificatore si basa su valori passati a HIDClass.sys da HIDSPI.SYS (estratto da ACPI).

Sequenza di enumerazione del dispositivo

Una volta caricato un driver di dispositivo HID SPI (HIDSPI.SYS), inizia a comunicare con il dispositivo sul bus SPI. La prima operazione eseguita dal driver è la sequenza di enumerazione del dispositivo.

Nell'elenco seguente viene specificata la sequenza di enumerazione. L'ordine di questo elenco può cambiare nelle versioni future di Windows.

  1. Recuperare il codice ACPI Source Language (ASL) per il dispositivo HID SPI dal BIOS di sistema.

  2. Eseguire una reimpostazione avviata dall'host nel dispositivo

    • Chiamare il metodo _RST ACPI
    • L'interruzione GPIO del dispositivo si asserisce
    • Host legge la risposta di reimpostazione dal dispositivo
  3. Recuperare il descrittore HID dal dispositivo

    • Host scrive la richiesta di descrittore HID
    • L'interruzione GPIO del dispositivo si asserisce
    • Host legge la risposta del descrittore HID
  4. Recuperare il descrittore del report

    • La richiesta del descrittore del report viene scritta dall'host
    • L'interruzione GPIO del dispositivo si asserisce
    • Risposta del descrittore del report di lettura host

Se l'host non riesce a completare correttamente uno dei passaggi con il dispositivo, il driver HIDSPI può essere caricato con un valore di errore di Codice 10. L'host può ripetere la reimpostazione del dispositivo se non viene ricevuta alcuna risposta, ma la logica di ripetizione dei tentativi non è garantita.

Operazioni del report HID

La tabella seguente fornisce una panoramica delle operazioni di report HID supportate dal protocollo HID SPI e dai report di input e output usati per eseguire l'operazione.

Tipo di report HID Operazione Tipo di report di output Tipo di report di input
Input Report GET 0x06
(Richiesta - contenuto vuoto)
0x0B
(Risposta)
Input Report SET
(Non supportato)
N/D N/D
Input Report INTERRUZIONE IN N/A - Nessuna richiesta 0x01
Report funzionalità GET 0x04
(Richiesta - contenuto vuoto)
0x05
(Risposta)
Report funzionalità SET 0x03 0x09
(Riconoscimento - contenuto vuoto)
Output Report GET
(Non supportato)
N/D N/D
Output Report SET 0x05 0x0A
(Riconoscimento - contenuto vuoto)

Operazioni del protocollo

Operazione Tipo di report richiesta Tipo di report di risposta
Richiesta del descrittore del dispositivo 0x01 0x7
Richiesta del descrittore del report 0x02 0x8
Richiesta di comando 0x07 0x4
Reimposta risposta N/D 0x3

Vedi anche

Linguaggio di origine ACPI (ASL)