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.
Recuperare il codice ACPI Source Language (ASL) per il dispositivo HID SPI dal BIOS di sistema.
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
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
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 |