CONTROLLER_ATTRIBUTE_FLAGS union (gpioclx.h)
CONTROLLER_ATTRIBUTE_FLAGS 構造体では、汎用 I/O (GPIO) コントローラー デバイスのハードウェア属性について説明します。
構文
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;
メンバーズ
MemoryMappedController
GPIO コントローラーがメモリ マップされているかどうか。 このフラグが設定されている場合、GPIO コントローラーのハードウェア レジスタはメモリ アドレスにマップされ、DIRQL で実行されている GPIO コントローラー ドライバー ルーチンから直接アクセスできます。 それ以外の場合は、GPIO コントローラー ドライバーが IRQL = PASSIVE_LEVELで送信する I/O 要求によってのみ、GPIO コントローラーのレジスタにアクセスできます。 詳細については、「解説」を参照してください。
ActiveInterruptsAutoClearOnRead
アクティブな割り込みが GPIO コントローラー ドライバーによって読み取られたときに自動的にクリアされるかどうか。 このフラグが設定されている場合、GpioClx では、割り込みが読み取られるときに自動的にクリアされると見なされるため、割り込み処理中にアクティブな割り込みをドライバーがクリアすることを明示的に要求しません。 それ以外の場合、GpioClx はアクティブな割り込みをクリアすることを明示的に要求します。 詳細については、GPIO_CLIENT_REGISTRATION_PACKETの ActiveInterruptsAutoClearOnRead フラグ ビットの説明を参照してください。
FormatIoRequestsAsMasks
GPIO ピンに対して読み取りまたは書き込みを行うコールバック関数で、読み取り値と書き込み値を 64 ビット マスクとして指定するかどうか。 このフラグが設定されている場合、GpioClx は GPIO ピン値をマスクに読み取る CLIENT_ReadGpioPinsUsingMask コールバックを使用し、マスクを使用して設定およびクリアする GPIO ピンを指定するコールバックを CLIENT_WriteGpioPinsUsingMask します。 それ以外の場合、GpioClx は、ピン番号の配列を使用してアクセスする GPIO ピンを指定する CLIENT_ReadGpioPins コールバックと CLIENT_WriteGpioPins コールバックを使用します。 詳細については、GPIO_CLIENT_REGISTRATION_PACKETの FormatIoRequestsAsMasks フラグ ビットの説明を参照してください。
DeviceIdlePowerMgmtSupported
GPIO コントローラーがデバイス レベルの電源管理をサポートしているかどうか。 このフラグが設定されている場合、GPIO コントローラーはアイドル状態 (つまり、コントローラーへのアクティブな接続がない場合) に低電力 (D3) 状態にすることができます。 それ以外の場合、GPIO コントローラーは、コントローラーがオンになっているたびに完全にオン (D0) の電源状態になります。
BankIdlePowerMgmtSupported
GPIO コントローラーがコンポーネント レベルの電源管理をサポートしているかどうか。 このフラグが設定されている場合、GPIO コントローラー内の 1 つ以上のバンクを、GPIO コントローラー内の他のバンクとは別に低電力状態にすることができます。 それ以外の場合、銀行の電源状態を個別に制御することはできません。 このフラグは、MemoryMappedController フラグで示されているように、レジスタがメモリ マップされている GPIO コントローラーに対してのみ設定できます。 通常、SoC モジュールの統合部分である GPIO コントローラーのみがメモリ マップされます。 SoC モジュールの外部にある GPIO コントローラーは、通常、メモリ マップされません。
EmulateDebouncing
GPIO ピンへの入力信号のデバウンスがソフトウェアまたはハードウェアによって実行されるかどうか。 このフラグが設定されている場合、GPIO コントローラーは、GPIO フレームワーク拡張機能 (GpioClx) によってソフトウェアでデバウンスをエミュレートする必要があります。 それ以外の場合、デバウンスはハードウェアによって実行され、ソフトウェアエミュレートされたデバウンスは不要です。
EmulateActiveBoth
GPIO コントローラー ドライバーで、ソフトウェアでアクティブと両方の割り込みをエミュレートするために GpioClx が必要かどうか。 このフラグが設定されている場合、GpioClx はソフトウェアでアクティブな両方の割り込みをエミュレートします。 それ以外の場合、GpioClx はアクティブな両方の割り込みをエミュレートしません。 詳細については、「解説」を参照してください。
IndependentIoHwSupported
Reserved
システム用に予約されています。
AsULONG
備考
CLIENT_CONTROLLER_BASIC_INFORMATION 構造体の Flags メンバーは、CONTROLLER_ATTRIBUTE_FLAGS 構造体です。
GpioClx は、割り込みサービス ルーチン (ISR) を実装して、GPIO コントローラーからの割り込みを処理します。 MemoryMappedController フラグ ビットが設定されている場合、この ISR は GPIO コントローラーのハードウェア レジスタに直接アクセスします。 それ以外の場合、ISR は割り込みを処理するようにワーカー スレッドをスケジュールし、IRQL = PASSIVE_LEVEL で実行されるこのワーカー スレッドは、ドライバーの割り込みに関連するコールバック関数を呼び出して割り込みを処理します。 これらの関数は、I/O 要求を使用して、GPIO コントローラーのレジスタとの間でデータと制御情報を転送します。 これらの I/O 要求はパッシブ レベルのスレッドから送信されるため、同期的に送信できます。
MemoryMappedController フラグ ビットの詳細については、「Interrupt-Related コールバック」を参照してください。
アクティブと両方の割り込みはエッジによってトリガーされる割り込みであり、割り込み要求は割り込みラインで低から高または高から低への遷移によって示されます。 低から高の遷移が割り込み要求を通知した後、高から低への遷移が次の割り込み要求を通知するまで、割り込みラインは高いままです。 同様に、高から低への遷移信号が割り込み要求を送信した後、低から高への遷移が次の割り込み要求を通知するまで、割り込みラインは低いままです。
通常、プッシュ ボタン デバイスはアクティブと両方の割り込みに接続されます。 ユーザーがボタンを押すと割り込みが生成され、ボタンが離されると別の割り込みが生成されます。 デバイス ドライバーの ISR がアクティブと両方の割り込みに接続されている場合、ISR は信号線の立ち上がりと立ち下がりの両方のエッジで呼び出されます。
一部の GPIO コントローラーでは、アクティブと両方の割り込み入力がハードウェアに実装されています。 ただし、ハードウェアがアクティブと両方の割り込みをサポートしていない場合、GPIO コントローラー ドライバーは、EmulateActiveBoth フラグを設定して、GpioClx がソフトウェアでアクティブと両方の割り込みをエミュレートするように要求します。 このフラグを設定するドライバーは、CLIENT_ReconfigureInterrupt コールバック関数を実装する必要があります。 アクティブとローの両方の割り込みピンをエミュレートするために、GpioClx はこの関数を呼び出して、アクティブ/ハイ/アクティブ/ロー レベル モード割り込み用に GPIO ピンを代替的に構成します。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 8 以降でサポートされています。 |
ヘッダー | gpioclx.h |