CONTROLLER_ATTRIBUTE_FLAGS Union (gpioclx.h)
Die CONTROLLER_ATTRIBUTE_FLAGS-Struktur beschreibt die Hardwareattribute des allgemeinen I/O-Controllergeräts (GPIO).
Syntax
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;
Angehörige
MemoryMappedController
Gibt an, ob der GPIO-Controller speichergeschützt ist. Wenn dieses Flag festgelegt ist, werden die Hardwareregister des GPIO-Controllers Speicheradressen zugeordnet und können direkt über eine GPIO-Controllertreiberroutine aufgerufen werden, die bei DIRQL ausgeführt wird. Andernfalls können auf die Register des GPIO-Controllers nur über E/A-Anforderungen zugegriffen werden, die der GPIO-Controllertreiber bei IRQL = PASSIVE_LEVEL sendet. Weitere Informationen finden Sie in den Hinweisen.
ActiveInterruptsAutoClearOnRead
Gibt an, ob aktive Unterbrechungen automatisch gelöscht werden, wenn der GPIO-Controllertreiber sie liest. Wenn dieses Flag festgelegt ist, geht GpioClx davon aus, dass Unterbrechungen automatisch gelöscht werden, wenn sie gelesen werden, und fordert daher nicht explizit an, dass der Treiber aktive Unterbrechungen während der Unterbrechungsverarbeitung löscht. Andernfalls fordert GpioClx explizit an, dass aktive Unterbrechungen gelöscht werden. Weitere Informationen finden Sie in der Erläuterung der ActiveInterruptsAutoClearOnRead- Flagbit in GPIO_CLIENT_REGISTRATION_PACKET.
FormatIoRequestsAsMasks
Gibt an, ob Rückruffunktionen, die von GPIO-Pins gelesen oder in GPIO-Pins geschrieben werden, Lese- und Schreibwerte als 64-Bit-Masken angeben sollen. Wenn dieses Flag festgelegt ist, verwendet GpioClx CLIENT_ReadGpioPinsUsingMask Rückrufe, die GPIO-Pinwerte in Masken lesen, und CLIENT_WriteGpioPinsUsingMask Rückrufe, die Masken zum Festlegen und Löschen von GPIO-Pins verwenden. Andernfalls verwendet GpioClx CLIENT_ReadGpioPins und CLIENT_WriteGpioPins Rückrufe, die Arrays von Pinnummern verwenden, um anzugeben, auf welche GPIO-Pins zugegriffen werden soll. Weitere Informationen finden Sie in der Erläuterung der FormatIoRequestsAsMasks Flagbit in GPIO_CLIENT_REGISTRATION_PACKET.
DeviceIdlePowerMgmtSupported
Gibt an, ob der GPIO-Controller die Energieverwaltung auf Geräteebene unterstützt. Wenn dieses Flag festgelegt ist, kann der GPIO-Controller in einen D3-Zustand (Low-Power) versetzt werden, wenn es sich im Leerlauf befindet (d. a., wenn keine aktiven Verbindungen mit dem Controller vorhanden sind). Andernfalls verbleibt der GPIO-Controller bei jedem Einschalten des Controllers im Vollbetriebszustand (D0).
BankIdlePowerMgmtSupported
Gibt an, ob der GPIO-Controller die Energieverwaltung auf Komponentenebene unterstützt. Wenn diese Kennzeichnung festgelegt ist, kann eine oder mehrere Banken im GPIO-Controller unabhängig von den anderen Banken im GPIO-Controller in einen Energiesparzustand versetzt werden. Andernfalls können die Machtzustände der Banken nicht einzeln kontrolliert werden. Dieses Flag kann nur für einen GPIO-Controller festgelegt werden, dessen Register speicherzuordnungen sind, wie durch das MemoryMappedController Flag angegeben. In der Regel ist nur ein GPIO-Controller, der ein integrierter Teil eines SoC-Moduls ist, speicherzuordnungen. Ein GPIO-Controller, der extern das SoC-Modul ist, ist in der Regel nicht speicherzuordnungsgeschützt.
EmulateDebouncing
Ob das Entprellen von Eingabesignalen an GPIO-Pins durch Software oder Hardware erfolgt. Wenn dieses Flag festgelegt ist, muss der GPIO-Controller debouncing in Software durch die GPIO-Frameworkerweiterung (GpioClx) emuliert werden. Andernfalls wird entprencing von Hardware durchgeführt, und software-emulierte Entprenkung ist unnötig.
EmulateActiveBoth
Gibt an, ob der GPIO-Controllertreiber GpioClx zum Emulieren von aktiven Unterbrechungen in Software erfordert. Wenn dieses Flag festgelegt ist, emuliert GpioClx aktiv-beide Interrupts in Software. Andernfalls emuliert GpioClx keine aktiven Unterbrechungen. Weitere Informationen finden Sie in den Hinweisen.
IndependentIoHwSupported
Reserved
Reserviert für die Systemverwendung.
AsULONG
Bemerkungen
Das Flags Element der CLIENT_CONTROLLER_BASIC_INFORMATION Struktur ist eine CONTROLLER_ATTRIBUTE_FLAGS Struktur.
GpioClx implementiert eine Unterbrechungsdienstroutine (Interrupt Service Routine, ISR) in Dienstunterbrechungen vom GPIO-Controller. Wenn der MemoryMappedController Flagbit festgelegt ist, greift dieser ISR direkt auf die Hardwareregister des GPIO-Controllers zu. Andernfalls plant der ISR einen Workerthread für die Verarbeitung des Interrupts, und dieser Workerthread, der bei IRQL = PASSIVE_LEVEL ausgeführt wird, ruft die interruptbezogenen Rückruffunktionen des Treibers auf, um den Interrupt zu behandeln. Diese Funktionen verwenden E/A-Anforderungen, um Daten und Steuerungsinformationen an und aus den Registern des GPIO-Controllers zu übertragen. Da diese E/A-Anforderungen von einem Passive-Level-Thread gesendet werden, können sie synchron gesendet werden.
Weitere Informationen zum MemoryMappedController Flagbit finden Sie unter Interrupt-Related Rückrufe.
Ein aktiver Beide-Interrupt ist ein edgeauslöster Interrupt, für den eine Interruptanforderung durch einen low-to-high- oder einen high-to-low-Übergang in der Unterbrechungslinie angegeben wird. Nach einem Low-to-High-Übergang signalisiert eine Unterbrechungsanforderung die Unterbrechungslinie hoch, bis eine Hoch-zu-Niedrig-Übergangsanforderung die nächste Interruptanforderung signalisiert. Entsprechend bleibt die Unterbrechungslinie niedrig, nachdem ein Hoch-zu-Niedrig-Übergang eine Unterbrechungsanforderung signalisiert hat, bis eine Low-to-High-Übergangsanforderung die nächste Interruptanforderung signalisiert.
Ein Knopfdruckgerät ist in der Regel mit einem aktiven Interrupt verbunden. Ein Interrupt wird generiert, wenn der Benutzer die Schaltfläche drückt, und ein weiterer Interrupt wird generiert, wenn die Schaltfläche losgelassen wird. Wenn der ISR eines Gerätetreibers mit einem aktiven Interrupt verbunden ist, wird der ISR sowohl auf aufsteigenden als auch fallenden Rändern der Signalleitung aufgerufen.
Einige GPIO-Controller implementieren aktive Unterbrechungseingaben in der Hardware. Wenn die Hardware jedoch keine aktiven Unterbrechungen unterstützt, legt der GPIO-Controllertreiber die EmulateActiveBoth- Flag fest, um anzufordern, dass GpioClx aktiv-both-Interrupts in Software emulieren. Ein Treiber, der dieses Flag festlegt, muss eine CLIENT_ReconfigureInterrupt Rückruffunktion implementieren. Um einen aktiv-beide Interrupt-Pin zu emulieren, ruft GpioClx diese Funktion auf, um alternativ einen GPIO-Pin für Unterbrechungen im aktiven und niedrigen Modus zu konfigurieren.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Wird ab Windows 8 unterstützt. |
Header- | gpioclx.h |