Compartir a través de


CONTROLLER_ATTRIBUTE_FLAGS unión (gpioclx.h)

La estructura CONTROLLER_ATTRIBUTE_FLAGS describe los atributos de hardware del dispositivo de controlador de E/S de uso general (GPIO).

Sintaxis

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;

Miembros

MemoryMappedController

Si el controlador GPIO está asignado a memoria. Si se establece esta marca, los registros de hardware del controlador GPIO se asignan a direcciones de memoria y se puede acceder directamente a ellos mediante una rutina de controlador de controlador GPIO que se ejecuta en DIRQL. De lo contrario, solo se puede acceder a los registros del controlador GPIO mediante solicitudes de E/S, que el controlador de GPIO envía en IRQL = PASSIVE_LEVEL. Para obtener más información, vea la sección Comentarios.

ActiveInterruptsAutoClearOnRead

Si las interrupciones activas se borran automáticamente cuando el controlador del controlador GPIO los lee. Si se establece esta marca, GpioClx asume que las interrupciones se borran automáticamente cuando se leen y, por lo tanto, no solicita explícitamente que el controlador borre las interrupciones activas durante el procesamiento de interrupciones. De lo contrario, GpioClx solicita explícitamente que se borren las interrupciones activas. Para obtener más información, vea la explicación del bit de marca ActiveInterruptsAutoClearOnRead en GPIO_CLIENT_REGISTRATION_PACKET.

FormatIoRequestsAsMasks

Si las funciones de devolución de llamada que leen o escriben en patillas GPIO deben especificar valores de lectura y escritura como máscaras de 64 bits. Si se establece esta marca, GpioClx usa CLIENT_ReadGpioPinsUsingMask devoluciones de llamada que leen valores de patillas GPIO en máscaras y CLIENT_WriteGpioPinsUsingMask devoluciones de llamada que usan máscaras para designar patillas GPIO para establecer y borrar. De lo contrario, GpioClx usa CLIENT_ReadGpioPins y CLIENT_WriteGpioPins devoluciones de llamada que usan matrices de números de patillas para especificar a qué patillas GPIO acceder. Para obtener más información, vea la explicación del bit de marca FormatIoRequestsAsMasks en GPIO_CLIENT_REGISTRATION_PACKET.

DeviceIdlePowerMgmtSupported

Si el controlador GPIO admite la administración de energía de nivel de dispositivo. Si se establece esta marca, el controlador GPIO se puede colocar en un estado de baja potencia (D3) cuando está inactivo (es decir, cuando no hay conexiones activas al controlador). De lo contrario, el controlador GPIO permanece en el estado de alimentación totalmente encendido (D0) en cualquier momento en que el controlador esté activado.

BankIdlePowerMgmtSupported

Si el controlador GPIO admite la administración de energía de nivel de componente. Si se establece esta marca, uno o varios bancos del controlador GPIO se pueden colocar en un estado de bajo consumo independientemente de los otros bancos del controlador GPIO. De lo contrario, los estados de energía de los bancos no se pueden controlar individualmente. Esta marca solo se puede establecer para un controlador GPIO cuyos registros están asignados a la memoria, como se indica en la marca MemoryMappedController . Normalmente, solo se asigna memoria a un controlador GPIO que forma parte integrada de un módulo SoC. Normalmente, un controlador GPIO externo al módulo SoC no está asignado a la memoria.

EmulateDebouncing

Indica si el software o el hardware realizan la desaplicación de señales de entrada a patillas GPIO. Si se establece esta marca, el controlador GPIO requiere que la extensión del marco GPIO (GpioClx) emule el software. De lo contrario, la desaplicación se realiza mediante hardware y la desaplicación emulada por software no es necesaria.

EmulateActiveBoth

Si el controlador del controlador GPIO requiere GpioClx para emular las interrupciones activas y ambas en el software. Si se establece esta marca, GpioClx emula las interrupciones activas y ambas en el software. De lo contrario, GpioClx no emula las interrupciones activas. Para obtener más información, vea la sección Comentarios.

IndependentIoHwSupported

Reserved

Reservado para uso del sistema.

AsULONG

Comentarios

El miembro Flags de la estructura CLIENT_CONTROLLER_BASIC_INFORMATION es una estructura CONTROLLER_ATTRIBUTE_FLAGS .

GpioClx implementa una rutina de servicio de interrupción (ISR) para interrumpir las interrupciones del servicio desde el controlador GPIO. Si se establece el bit de marca MemoryMappedController , este ISR accede directamente a los registros de hardware del controlador GPIO. De lo contrario, el ISR programa un subproceso de trabajo para controlar la interrupción y este subproceso de trabajo, que se ejecuta en IRQL = PASSIVE_LEVEL, llama a las funciones de devolución de llamada relacionadas con interrupciones del controlador para controlar la interrupción. Estas funciones usan solicitudes de E/S para transferir datos e información de control hacia y desde los registros del controlador GPIO. Dado que estas solicitudes de E/S se envían desde un subproceso de nivel pasivo, se pueden enviar de forma sincrónica.

Para obtener más información sobre el bit de marca MemoryMappedController , vea Devoluciones de llamada relacionadas con interrupciones.

Una interrupción activa-ambas es una interrupción desencadenada por el borde para la que una solicitud de interrupción se indica mediante una transición de baja a alta o alta a baja en la línea de interrupción. Después de una transición baja a alta indica una solicitud de interrupción, la línea de interrupción permanece alta hasta que una transición de alto a bajo señala la siguiente solicitud de interrupción. Del mismo modo, después de una transición alta a baja indica una solicitud de interrupción, la línea de interrupción permanece baja hasta que una transición baja a alta señala la siguiente solicitud de interrupción.

Normalmente, un dispositivo de botón de pulsación está conectado a una interrupción activa de ambos. Se genera una interrupción cuando el usuario presiona el botón y se genera otra interrupción cuando se suelta el botón. Si el ISR de un controlador de dispositivo está conectado a una interrupción activa de ambos, se llama al ISR en bordes ascendentes y descendentes de la línea de señal.

Algunos controladores GPIO implementan entradas de interrupción activas y ambas en el hardware. Sin embargo, si el hardware no admite interrupciones activas, el controlador del controlador GPIO establece la marca EmulateActiveBoth para solicitar que GpioClx emule las interrupciones activas en el software. Un controlador que establece esta marca debe implementar una función de devolución de llamada CLIENT_ReconfigureInterrupt . Para emular un pin de interrupción activo-ambos, GpioClx llama a esta función para configurar alternativamente un pin GPIO para interrupciones en modo activo-alto y activo-bajo.

Requisitos

Requisito Value
Cliente mínimo compatible Se admite a partir de Windows 8.
Encabezado gpioclx.h

Consulte también

CLIENT_CONTROLLER_BASIC_INFORMATION

CLIENT_QueryActiveInterrupts

CLIENT_ReadGpioPins

CLIENT_ReadGpioPinsUsingMask

CLIENT_ReconfigureInterrupt

CLIENT_WriteGpioPins

CLIENT_WriteGpioPinsUsingMask

GPIO_CLIENT_REGISTRATION_PACKET