Compartilhar via


CONTROLLER_ATTRIBUTE_FLAGS união (gpioclx.h)

A estrutura CONTROLLER_ATTRIBUTE_FLAGS descreve os atributos de hardware do dispositivo de controlador gpio (E/S) de uso geral.

Sintaxe

typedef union _CONTROLLER_ATTRIBUTE_FLAGS {
  struct {
    ULONG MemoryMappedController : 1;
    ULONG ActiveInterruptsAutoClearOnRead : 1;
    ULONG FormatIoRequestsAsMasks : 1;
    ULONG DeviceIdlePowerMgmtSupported : 1;
    ULONG BankIdlePowerMgmtSupported : 1;
    ULONG EmulateDebouncing : 1;
    ULONG EmulateActiveBoth : 1;
    ULONG IndependentIoHwSupported : 1;
    ULONG Reserved : 24;
  };
  ULONG  AsULONG;
} CONTROLLER_ATTRIBUTE_FLAGS, *PCONTROLLER_ATTRIBUTE_FLAGS;

Membros

MemoryMappedController

Se o controlador GPIO está mapeado para memória. Se esse sinalizador estiver definido, os registros de hardware do controlador GPIO serão mapeados para endereços de memória e poderão ser acessados diretamente por uma rotina de driver do controlador GPIO que está em execução no DIRQL. Caso contrário, os registros do controlador GPIO só poderão ser acessados por meio de solicitações de E/S, que o driver do controlador GPIO envia em IRQL = PASSIVE_LEVEL. Para obter mais informações, consulte Comentários.

ActiveInterruptsAutoClearOnRead

Se as interrupções ativas são desmarcadas automaticamente quando o driver do controlador GPIO as lê. Se esse sinalizador for definido, o GpioClx pressupõe que as interrupções sejam desmarcadas automaticamente quando são lidas e, portanto, não solicita explicitamente que o driver limpe as interrupções ativas durante o processamento de interrupção. Caso contrário, o GpioClx solicita explicitamente que as interrupções ativas sejam desmarcadas. Para obter mais informações, consulte a discussão do bit de sinalizador ActiveInterruptsAutoClearOnRead no GPIO_CLIENT_REGISTRATION_PACKET.

FormatIoRequestsAsMasks

Se as funções de retorno de chamada que leem ou gravam em pinos GPIO devem especificar valores de leitura e gravação como máscaras de 64 bits. Se esse sinalizador estiver definido, o GpioClx usará CLIENT_ReadGpioPinsUsingMask retornos de chamada que leem valores de fixação GPIO em máscaras e CLIENT_WriteGpioPinsUsingMask retornos de chamada que usam máscaras para designar pinos GPIO para definir e limpar. Caso contrário, o GpioClx usa CLIENT_ReadGpioPins e CLIENT_WriteGpioPins retornos de chamada que usam matrizes de números de pino para especificar quais pinos gpio acessar. Para obter mais informações, consulte a discussão do FormatIoRequestsAsMasks bit de sinalizador em GPIO_CLIENT_REGISTRATION_PACKET.

DeviceIdlePowerMgmtSupported

Se o controlador GPIO dá suporte ao gerenciamento de energia no nível do dispositivo. Se esse sinalizador estiver definido, o controlador GPIO poderá ser colocado em um estado de baixa potência (D3) quando estiver ocioso (ou seja, quando não houver conexões ativas com o controlador). Caso contrário, o controlador GPIO permanecerá no estado de energia totalmente ativado (D0) sempre que o controlador estiver ativado.

BankIdlePowerMgmtSupported

Se o controlador GPIO dá suporte ao gerenciamento de energia no nível do componente. Se esse sinalizador for definido, um ou mais bancos no controlador GPIO poderão ser colocados em um estado de baixa potência independentemente dos outros bancos no controlador GPIO. Caso contrário, os estados de poder dos bancos não podem ser controlados individualmente. Esse sinalizador pode ser definido apenas para um controlador GPIO cujos registros são mapeados pela memória, conforme indicado pelo sinalizador MemoryMappedController. Normalmente, apenas um controlador GPIO que é uma parte integrada de um módulo SoC é mapeado pela memória. Um controlador GPIO que é externo ao módulo SoC normalmente não é mapeado para memória.

EmulateDebouncing

Se o debouncing de sinais de entrada para pinos GPIO é executado por software ou por hardware. Se esse sinalizador for definido, o controlador GPIO exigirá que o debouncing seja emulado no software pela extensão da estrutura GPIO (GpioClx). Caso contrário, o debouncing é executado por hardware e o debouncing emulado por software é desnecessário.

EmulateActiveBoth

Se o driver do controlador GPIO requer gpioClx para emular interrupções ativas de ambos no software. Se esse sinalizador for definido, o GpioClx emula as interrupções ativas e ambas no software. Caso contrário, GpioClx não emula interrupções ativas de ambos. Para obter mais informações, consulte Comentários.

IndependentIoHwSupported

Reserved

Reservado para uso do sistema.

AsULONG

Observações

O Flags membro da estrutura CLIENT_CONTROLLER_BASIC_INFORMATION é uma estrutura CONTROLLER_ATTRIBUTE_FLAGS.

O GpioClx implementa uma ISR (rotina de serviço de interrupção) para interromper o serviço do controlador GPIO. Se o MemoryMappedController bit de sinalizador estiver definido, esse ISR acessará diretamente os registros de hardware do controlador GPIO. Caso contrário, o ISR agenda um thread de trabalho para lidar com a interrupção e esse thread de trabalho, que é executado em IRQL = PASSIVE_LEVEL, chama as funções de retorno de chamada relacionadas à interrupção do driver para lidar com a interrupção. Essas funções usam solicitações de E/S para transferir dados e informações de controle de e para os registros do controlador GPIO. Como essas solicitações de E/S são enviadas de um thread de nível passivo, elas podem ser enviadas de forma síncrona.

Para obter mais informações sobre o bit de sinalizador MemoryMappedController, consulte Interrupt-Related Callbacks.

Uma interrupção ativa de ambos é uma interrupção disparada por borda para a qual uma solicitação de interrupção é indicada por uma transição de baixa para alta ou alta para baixa na linha de interrupção. Depois que uma transição baixa para alta sinaliza uma solicitação de interrupção, a linha de interrupção permanece alta até que uma transição alta para baixa sinalize a próxima solicitação de interrupção. Da mesma forma, depois que uma transição alta para baixa sinaliza uma solicitação de interrupção, a linha de interrupção permanece baixa até que uma transição de baixo para alto sinalize a próxima solicitação de interrupção.

Um dispositivo de botão de push normalmente está conectado a uma interrupção ativa de ambos. Uma interrupção é gerada quando o usuário pressiona o botão e outra interrupção é gerada quando o botão é liberado. Se o ISR de um driver de dispositivo estiver conectado a uma interrupção ativa, o ISR será chamado nas bordas crescente e em queda da linha de sinal.

Alguns controladores GPIO implementam entradas de interrupção ativas em hardware. No entanto, se o hardware não der suporte a interrupções ativas, o driver do controlador GPIO definirá o sinalizador de EmulateActiveBoth para solicitar que o GpioClx emule interrupções ativas no software. Um driver que define esse sinalizador deve implementar uma função de retorno de chamada CLIENT_ReconfigureInterrupt. Para emular um pin de interrupção ativo-ambos, o GpioClx chama essa função para, como alternativa, configurar um pin GPIO para interrupções de modo de nível ativo-alto e ativo-baixo.

Requisitos

Requisito Valor
de cliente com suporte mínimo Com suporte a partir do Windows 8.
cabeçalho gpioclx.h

Consulte também

CLIENT_CONTROLLER_BASIC_INFORMATION

CLIENT_QueryActiveInterrupts

CLIENT_ReadGpioPins

CLIENT_ReadGpioPinsUsingMask

CLIENT_ReconfigureInterrupt

CLIENT_WriteGpioPins

CLIENT_WriteGpioPinsUsingMask

GPIO_CLIENT_REGISTRATION_PACKET