CONTROLLER_ATTRIBUTE_FLAGS union (gpioclx.h)

A estrutura CONTROLLER_ATTRIBUTE_FLAGS descreve os atributos de hardware do dispositivo 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 for 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 limpas automaticamente quando o driver do controlador GPIO as lê. Se esse sinalizador for definido, o GpioClx pressupõe que as interrupções são limpas automaticamente quando são lidas e, portanto, não solicita explicitamente que o driver limpe as interrupções ativas durante o processamento da interrupção. Caso contrário, o GpioClx solicita explicitamente que as interrupções ativas sejam limpas. Para obter mais informações, consulte a discussão do bit do sinalizador ActiveInterruptsAutoClearOnRead em 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 for definido, o GpioClx usará CLIENT_ReadGpioPinsUsingMask retornos de chamada que leem valores de pino 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 bit de sinalizador FormatIoRequestsAsMasks 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 só pode ser definido para um controlador GPIO cujos registros são mapeados em memória, conforme indicado pelo sinalizador MemoryMappedController . Normalmente, apenas um controlador GPIO que é uma parte integrada de um módulo SoC é mapeado para memória. Um controlador GPIO externo do módulo SoC normalmente não é mapeado para memória.

EmulateDebouncing

Se o debouncamento 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 de 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 e ambas no software. Se esse sinalizador estiver definido, o GpioClx emula as interrupções ativas e ambas no software. Caso contrário, GpioClx não emula interrupções ativas-ambas. Para obter mais informações, consulte Comentários.

IndependentIoHwSupported

Reserved

Reservado para uso do sistema.

AsULONG

Comentários

O membro Flags da estrutura CLIENT_CONTROLLER_BASIC_INFORMATION é uma estrutura CONTROLLER_ATTRIBUTE_FLAGS .

GpioClx implementa uma ISR (rotina de serviço de interrupção) para interromper o serviço do controlador GPIO. Se o bit do sinalizador MemoryMappedController 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 controlar informações 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 Retornos de chamada relacionados à interrupção.

Uma interrupção ativa-ambas é uma interrupção disparada por borda para a qual uma solicitação de interrupção é indicada por uma transição de baixo para alto ou de alto para baixo na linha de interrupção. Depois que uma transição de baixo para alto 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 de alto para baixo 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 ação 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 de ambos, o ISR será chamado em bordas crescentes e em queda da linha de sinal.

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

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte a partir do Windows 8.
Cabeçalho gpioclx.h

Confira também

CLIENT_CONTROLLER_BASIC_INFORMATION

CLIENT_QueryActiveInterrupts

CLIENT_ReadGpioPins

CLIENT_ReadGpioPinsUsingMask

CLIENT_ReconfigureInterrupt

CLIENT_WriteGpioPins

CLIENT_WriteGpioPinsUsingMask

GPIO_CLIENT_REGISTRATION_PACKET