Compartilhar via


suporte Plug and Play para HID por SPI

Este artigo descreve o suporte a plug-and-play para dispositivos que dão suporte a HID por meio do transporte SPI.

Carregamento do driver

O Windows carrega o driver de classe HID SPI com base em uma correspondência de identificador compatível entre um identificador de hardware e o INF. O identificador é gerado pela ACPI (Advanced Configuration and Power Interface). O identificador de hardware é gerado para o nó de dispositivo SPI no ACPI. Todos os dispositivos compatíveis com HID SPI devem expor o identificador de compatibilidade, além de um identificador de hardware exclusivo.

A Especificação do ACPI 5.0 inclui suporte para dispositivos de classe HID. as definições de ACPI para HID SPI são as seguintes.

Campo Valor Objeto ACPI Formatar Comentários
ID de hardware Específico do fornecedor _ESCONDEU Cadeia de caracteres no formato VVVVddddd (por exemplo, MSFT0011) VendorID + DeviceID
ID compatível PNP0C51 _CID Cadeia de caracteres no formato ACPIxxxx ou PNPxxx CompatibleID
Subsistema Específico do fornecedor _SUB Cadeia de caracteres no formato de VVVVsss (por exemplo, MSFQ1234) SubVendorID + SubSystemID
Revisão de hardware Específico do fornecedor _VFC 0xRRRR (revisão de 2byte) Número de revisão de hardware
Configurações atuais do recurso Específico do fornecedor _CRS Fluxo de bytes - SpiSerialBus para acesso ao dispositivo.
- GpioInt para interrupções.
Método específico do dispositivo GUID {6e2ac436-0fcf-41af-a265-b32a220dcfab} _DSM Pacote Define uma estrutura que contém informações específicas do dispositivo.
Método de redefinição de dispositivo   _RST   Método de redefinição de dispositivo compatível com ACPI 6.0 7.3.25, a ser chamado pelo sistema operacional host como UM FLDR ACPI.

Cada dispositivo HID SPI deve fornecer os seguintes campos obrigatórios:

  • ID de hardware
  • ID compatível
  • Revisão de hardware
  • Configurações atuais do recurso
  • Método específico do dispositivo
  • Método de redefinição de dispositivo

Consulte a especificação da ACPI (Advanced Configuration and Power Interface) 6.0 para obter informações adicionais.

O exemplo a seguir fornece um exemplo de IDs de hardware e IDs compatíveis para um dispositivo HID SPI aleatório. Esses detalhes são baseados em um dispositivo de exemplo que se relata como um HID com uma coleção de nível superior da classe "específica do fornecedor".

A ACPI (Advanced Configuration and Power Interface) gera as seguintes IDs de hardware e IDs compatíveis para carregar o driver de transporte HID SPI:

Identificadores de hardware: identificadores compatíveis

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

ACPI\Vid_xxxxPid_yyyy;:

ACPI\xxxxyyyy;:

No exemplo anterior, a ID de Hardware foi gerada usando os valores extraídos do método ACPI _HID para o dispositivo de exemplo. A ID compatível é gerada usando os valores extraídos do método ACPI _CID para o dispositivo de exemplo. A ID compatível para um HID sobre SPI sempre deve ser PNP0C51 para a versão 1.0.

Observação

Se você fornecer um INF, deverá usar apenas os identificadores de hardware na coluna esquerda da tabela anterior. (Não use o identificador compatível na coluna à direita.)

A ID de hardware para o nó de dispositivo cliente HID gerado pelo componente HIDClass.sys é a seguinte:

Identificador de hardware: identificador compatível

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

A ID de hardware é gerada por HIDClass.sys e é idêntica para todos os transportes. Esse identificador é baseado em valores passados para HIDClass.sys de HIDSPI.SYS (extraídos do ACPI).

Sequência de enumeração do dispositivo

Depois que um driver de dispositivo HID SPI (HIDSPI.SYS) é carregado, ele começa a se comunicar com o dispositivo pelo barramento SPI. A primeira operação que o driver executa é a sequência de enumeração do dispositivo.

A lista a seguir fornece a sequência de enumeração. A ordem dessa lista pode mudar em versões futuras do Windows.

  1. Recupere o código ASL (linguagem de origem) do ACPI para o dispositivo SPI HID do BIOS do sistema.

  2. Emitir uma redefinição iniciada pelo host para o dispositivo

    • Chamar o método de _RST ACPI
    • O dispositivo declara a interrupção do GPIO
    • O host lê a resposta de redefinição do dispositivo
  3. Recuperar o descritor HID do dispositivo

    • O host grava a solicitação do descritor HID
    • O dispositivo declara a interrupção do GPIO
    • O host lê a resposta do descritor HID
  4. Recuperar descritor de relatório

    • O host grava a solicitação do descritor de relatório
    • O dispositivo declara a interrupção do GPIO
    • O host lê a resposta do descritor de relatório

Se o host não concluir com êxito qualquer uma das etapas com o dispositivo, o driver HIDSPI poderá ser carregado com um valor de erro do Código 10. O host poderá reattempt para redefinir o dispositivo se nenhuma resposta for recebida, mas a lógica de repetição não é garantida.

Operações de relatório hid

A tabela a seguir fornece uma visão geral das operações de relatório hid compatíveis com o protocolo SPI HID e os relatórios de entrada e saída que são usados para executar a operação.

Tipo de relatório HID Operação Tipo de relatório de saída Tipo de relatório de entrada
Relatório de Entrada GET 0x06
(Solicitação – conteúdo vazio)
0x0B
(Resposta)
Relatório de Entrada SET
(Sem suporte)
N/D N/D
Relatório de Entrada INTERRUPÇÃO EM N/D – Nenhuma solicitação 0x01
Relatório de recursos GET 0x04
(Solicitação – conteúdo vazio)
0x05
(Resposta)
Relatório de recursos SET 0x03 0x09
(Confirmação – conteúdo vazio)
Relatório de Saída GET
(Sem suporte)
N/D N/D
Relatório de Saída SET 0x05 0x0A
(Confirmação – conteúdo vazio)

Operações de protocolo

Operação Tipo de relatório de solicitação Tipo de relatório de resposta
Solicitação do Descritor de Dispositivo 0x01 0x7
Solicitação do Descritor de Relatório 0x02 0x8
Solicitação de comando 0x07 0x4
Redefinir Resposta N/D 0x3

Confira também

ASL (Linguagem de Origem ACPI)