Compartir a través de


Plug and Play compatibilidad con HID a través de SPI

En este artículo se describe la compatibilidad con plug and play para los dispositivos que admiten HID a través del transporte SPI.

Carga de controladores

Windows carga el controlador de clase HID SPI basado en una coincidencia de identificador compatible entre un identificador de hardware y el INF. La configuración avanzada y la interfaz de energía (ACPI) generan el identificador. El identificador de hardware se genera para el nodo de dispositivo SPI en ACPI. Todos los dispositivos compatibles con HID SPI deben exponer el identificador de compatibilidad, además de un identificador de hardware único.

La especificación ACPI 5.0 incluye compatibilidad con dispositivos de clase HID. Las definiciones ACPI para HID SPI son las siguientes.

Campo Valor AcpI (objeto) Formato Comentarios
Id. de hardware Específico del proveedor _ESCONDIÓ Cadena con el formato VVVVdddddd (por ejemplo, MSFT0011) VendorID + DeviceID
Id. compatible PNP0C51 _CID Cadena con el formato ACPIxxxx o PNPxxxx CompatibleID
Subsystem Específico del proveedor _SUB Cadena con el formato VVVVssss (por ejemplo, MSFQ1234) SubVendorID + SubSystemID
Revisión de hardware Específico del proveedor _HRV 0xRRRR (revisión 2byte) Número de revisión de hardware
Configuración actual de recursos Específico del proveedor _CRS Secuencia de bytes - SpiSerialBus para acceder al dispositivo.
- GpioInt para interrupciones.
Método específico del dispositivo GUID {6e2ac436-0fcf-41af-a265-b32a220dcfab} _DSM Paquete Define una estructura que contiene información específica del dispositivo.
Método Device Reset   _RST   Método de restablecimiento de dispositivo compatible con ACPI 6.0 7.3.25, al que llamará el sistema operativo host como FLDR ACPI.

Cada dispositivo HID SPI debe proporcionar los siguientes campos obligatorios:

  • Id. de hardware
  • Id. compatible
  • Revisión de hardware
  • Configuración actual de recursos
  • Método específico del dispositivo
  • Método Device Reset

Consulte la especificación Advanced Configuration and Power Interface (ACPI) 6.0 para obtener información adicional.

A continuación se proporciona un ejemplo de identificadores de hardware e identificadores compatibles para un dispositivo SPI HID aleatorio. Estos detalles se basan en un dispositivo de ejemplo que se notifica como HID con una colección de nivel superior de la clase "específica del proveedor".

Advanced Configuration and Power Interface (ACPI) genera los siguientes identificadores de hardware e identificadores compatibles para cargar el controlador de transporte HID SPI:

Identificadores de hardware: identificadores compatibles

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

ACPI\Vid_xxxxPid_yyyy;:

ACPI\xxxxyyyy;:

En el ejemplo anterior, el identificador de hardware se generó mediante los valores extraídos del método ACPI de _HID para el dispositivo de ejemplo. El identificador compatible se genera mediante los valores extraídos del método ACPI de _CID para el dispositivo de ejemplo. El identificador compatible para un HID a través de SPI siempre debe ser PNP0C51 para la versión 1.0.

Nota

Si proporciona un INF, solo debe usar los identificadores de hardware de la columna izquierda de la tabla anterior. (No use el identificador compatible en la columna derecha).

El identificador de hardware del nodo de dispositivo cliente HID generado por el componente HIDClass.sys es el siguiente:

Identificador de hardware: identificador 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

El identificador de hardware lo genera HIDClass.sys y es idéntico para todos los transportes. Este identificador se basa en los valores pasados a HIDClass.sys de HIDSPI.SYS (extraídos de ACPI).

Secuencia de enumeración de dispositivos

Una vez cargado un controlador de dispositivo HID SPI (HIDSPI.SYS), comienza a comunicarse con el dispositivo a través del bus SPI. La primera operación que realiza el controlador es la secuencia de enumeración del dispositivo.

En la lista siguiente se proporciona la secuencia de enumeración. El orden de esta lista puede cambiar en versiones futuras de Windows.

  1. Recupere el código del lenguaje de origen ACPI (ASL) para el dispositivo HID SPI desde el BIOS del sistema.

  2. Emitir un restablecimiento iniciado por el host en el dispositivo

    • Llamar al método de _RST ACPI
    • La interrupción de GPIO del dispositivo confirma la interrupción de GPIO
    • El host lee la respuesta de restablecimiento del dispositivo
  3. Recuperación del descriptor HID del dispositivo

    • El host escribe la solicitud del descriptor HID.
    • La interrupción de GPIO del dispositivo confirma la interrupción de GPIO
    • El host lee la respuesta del descriptor HID.
  4. Recuperación del descriptor de informe

    • El host escribe la solicitud del descriptor de informe
    • La interrupción de GPIO del dispositivo confirma la interrupción de GPIO
    • El host lee la respuesta del descriptor de informe.

Si el host no puede completar correctamente cualquiera de los pasos con el dispositivo, el controlador HIDSPI puede cargarse con un valor de error del código 10. El host puede volver a intentar restablecer el dispositivo si no se recibe ninguna respuesta, pero no se garantiza la lógica de reintento.

Operaciones de informe HID

En la tabla siguiente se proporciona información general sobre las operaciones de informe HID compatibles con el protocolo HID SPI y los informes de entrada y salida que se usan para llevar a cabo la operación.

Tipo de informe HID Operación Tipo de informe de salida Tipo de informe de entrada
Informe de entrada GET 0x06
(Solicitud: contenido vacío)
0x0B
(Respuesta)
Informe de entrada SET
(No compatible)
N/D N/D
Informe de entrada INTERRUPCIÓN EN N/A: sin solicitud 0x01
Informe de características GET 0x04
(Solicitud: contenido vacío)
0x05
(Respuesta)
Informe de características SET 0x03 0x09
(Confirmación: contenido vacío)
Informe de salida GET
(No compatible)
N/D N/D
Informe de salida SET 0x05 0x0A
(Confirmación: contenido vacío)

Operaciones de protocolo

Operación Tipo de informe de solicitud Tipo de informe de respuesta
Solicitud de descriptor de dispositivo 0x01 0x7
Solicitud de descriptor de informe 0x02 0x8
Solicitud de comando 0x07 0x4
Restablecer respuesta N/D 0x3

Consulte también

Lenguaje de origen ACPI (ASL)