Condividi tramite


unione CONTROLLER_ATTRIBUTE_FLAGS (gpioclx.h)

La struttura CONTROLLER_ATTRIBUTE_FLAGS descrive gli attributi hardware del dispositivo controller GPIO (General Purpose I/O).

Sintassi

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;

Members

MemoryMappedController

Indica se il controller GPIO è mappato alla memoria. Se questo flag è impostato, i registri hardware del controller GPIO vengono mappati agli indirizzi di memoria e possono essere accessibili direttamente da una routine del driver del controller GPIO in esecuzione in DIRQL. In caso contrario, è possibile accedere ai registri del controller GPIO solo tramite richieste di I/O, che il driver del controller GPIO invia a IRQL = PASSIVE_LEVEL. Per altre informazioni, vedere la sezione Osservazioni.

ActiveInterruptsAutoClearOnRead

Indica se gli interrupt attivi vengono cancellati automaticamente quando il driver del controller GPIO li legge. Se questo flag è impostato, GpioClx presuppone che gli interrupt vengano cancellati automaticamente quando vengono letti e, pertanto, non richiede esplicitamente che il driver cancella interruzioni attive durante l'elaborazione degli interrupt. In caso contrario, GpioClx richiede esplicitamente che gli interrupt attivi vengano cancellati. Per altre informazioni, vedere la discussione del bit del flag ActiveInterruptsAutoClearOnRead in GPIO_CLIENT_REGISTRATION_PACKET.

FormatIoRequestsAsMasks

Indica se le funzioni di callback che leggono o scrivono nei pin GPIO devono specificare valori di lettura e scrittura come maschere a 64 bit. Se questo flag è impostato, GpioClx usa CLIENT_ReadGpioPinsUsingMask callback che leggono i valori dei pin GPIO in maschere e CLIENT_WriteGpioPinsUsingMask callback che usano maschere per designare i pin GPIO da impostare e cancellare. In caso contrario, GpioClx usa CLIENT_ReadGpioPins e CLIENT_WriteGpioPins callback che usano matrici di numeri di pin per specificare quali pin GPIO accedere. Per altre informazioni, vedere la discussione sul bit del flag FormatIoRequestsAsMasks in GPIO_CLIENT_REGISTRATION_PACKET.

DeviceIdlePowerMgmtSupported

Indica se il controller GPIO supporta il risparmio energia a livello di dispositivo. Se questo flag è impostato, il controller GPIO può essere inserito in uno stato di bassa potenza (D3) quando è inattiva ,ovvero quando non sono presenti connessioni attive al controller. In caso contrario, il controller GPIO rimane nello stato di alimentazione completamente acceso (D0) ogni volta che il controller è acceso.

BankIdlePowerMgmtSupported

Indica se il controller GPIO supporta il risparmio energia a livello di componente. Se questo flag è impostato, una o più banche nel controller GPIO possono essere inserite in uno stato a basso consumo indipendentemente dalle altre banche nel controller GPIO. In caso contrario, gli stati di potere delle banche non possono essere controllati singolarmente. Questo flag può essere impostato solo per un controller GPIO i cui registri sono mappati alla memoria, come indicato dal flag MemoryMappedController . In genere, solo un controller GPIO che è una parte integrata di un modulo SoC è mappato alla memoria. Un controller GPIO esterno al modulo SoC non viene in genere mappato alla memoria.

EmulateDebouncing

Indipendentemente dal fatto che la debouncing dei segnali di input ai pin GPIO venga eseguita dal software o dall'hardware. Se questo flag è impostato, il controller GPIO richiede l'emulazione del software tramite l'estensione del framework GPIO (GpioClx). In caso contrario, la debouncing viene eseguita dall'hardware e la debouncing emulata dal software non è necessaria.

EmulateActiveBoth

Se il driver del controller GPIO richiede GpioClx per emulare interrupt attivi-entrambi nel software. Se questo flag è impostato, GpioClx emula gli interrupt attivi-entrambi nel software. In caso contrario, GpioClx non emula interrupt attivi-entrambi. Per altre informazioni, vedere la sezione Osservazioni.

IndependentIoHwSupported

Reserved

Riservato per l'utilizzo nel sistema.

AsULONG

Commenti

Il membro Flags della struttura CLIENT_CONTROLLER_BASIC_INFORMATION è una struttura CONTROLLER_ATTRIBUTE_FLAGS .

GpioClx implementa una routine del servizio di interruzione (ISR) per interrompere il servizio dal controller GPIO. Se il flag MemoryMappedController è impostato, questo ISR accede direttamente ai registri hardware del controller GPIO. In caso contrario, l'ISR pianifica un thread di lavoro per gestire l'interrupt e questo thread di lavoro, che viene eseguito in IRQL = PASSIVE_LEVEL, chiama le funzioni di callback correlate all'interrupt del driver per gestire l'interrupt. Queste funzioni usano le richieste di I/O per trasferire i dati e controllare le informazioni da e verso i registri del controller GPIO. Poiché queste richieste di I/O vengono inviate da un thread a livello passivo, possono essere inviate in modo sincrono.

Per altre informazioni sul bit del flag MemoryMappedController , vedere Callback correlati agli interrupt.

Un interrupt attivo-entrambi è un interrupt attivato da edge per il quale una richiesta di interrupt è indicata da una transizione da bassa a alta o alta a bassa sulla riga di interruzione. Dopo una transizione di tipo low-to-high segnala una richiesta di interrupt, la riga di interruzione rimane elevata fino a quando una transizione alta a bassa segnala la richiesta di interruzione successiva. Analogamente, dopo che una transizione alta a bassa segnala una richiesta di interrupt, la riga di interruzione rimane bassa fino a quando una transizione bassa a alta segnala la richiesta di interruzione successiva.

Un dispositivo con pulsante a pressione è in genere connesso a un interrupt attivo-entrambi. Viene generato un interrupt quando l'utente preme il pulsante e viene generato un altro interrupt quando il pulsante viene rilasciato. Se l'ISR di un driver di dispositivo è connesso a un interrupt attivo-entrambi, l'ISR viene chiamato sia sui bordi crescenti che in caduta della linea del segnale.

Alcuni controller GPIO implementano input di interrupt attivi-entrambi nell'hardware. Tuttavia, se l'hardware non supporta interrupt attivi-entrambi, il driver del controller GPIO imposta il flag EmulateActiveBoth per richiedere che GpioClx emula gli interrupt attivi-entrambi nel software. Un driver che imposta questo flag deve implementare una funzione di callback CLIENT_ReconfigureInterrupt . Per emulare un pin di interrupt attivo-entrambi, GpioClx chiama questa funzione per configurare in alternativa un pin GPIO per interrupt in modalità attiva-alta e bassa.

Requisiti

Requisito Valore
Client minimo supportato Supportato a partire da Windows 8.
Intestazione gpioclx.h

Vedi anche

CLIENT_CONTROLLER_BASIC_INFORMATION

CLIENT_QueryActiveInterrupts

CLIENT_ReadGpioPins

CLIENT_ReadGpioPinsUsingMask

CLIENT_ReconfigureInterrupt

CLIENT_WriteGpioPins

CLIENT_WriteGpioPinsUsingMask

GPIO_CLIENT_REGISTRATION_PACKET