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_PACKETActiveInterruptsAutoClearOnRead フラグ ビットの説明を参照してください。

FormatIoRequestsAsMasks

GPIO ピンに対して読み取りまたは書き込みを行うコールバック関数で、読み取り値と書き込み値を 64 ビット マスクとして指定するかどうか。 このフラグが設定されている場合、GpioClx は GPIO ピン値をマスクに読み取るCLIENT_ReadGpioPinsUsingMaskコールバックを使用し、マスクを使用して設定およびクリアする GPIO ピンを指定するコールバックをCLIENT_WriteGpioPinsUsingMaskします。 それ以外の場合、GpioClx は CLIENT_ReadGpioPinsCLIENT_WriteGpioPins コールバックを使用し、ピン番号の配列を使用して、アクセスする GPIO ピンを指定します。 詳細については、GPIO_CLIENT_REGISTRATION_PACKETFormatIoRequestsAsMasks フラグ ビットの説明を参照してください。

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 は、GPIO コントローラーからの割り込みを処理するための割り込みサービス ルーチン (ISR) を実装します。 MemoryMappedController フラグ ビットが設定されている場合、この ISR は GPIO コントローラーのハードウェア レジスタに直接アクセスします。 それ以外の場合、ISR は割り込みを処理するようにワーカー スレッドをスケジュールし、IRQL = PASSIVE_LEVEL で実行されるこのワーカー スレッドは、ドライバーの割り込みに関連するコールバック関数を呼び出して割り込みを処理します。 これらの関数は、I/O 要求を使用して、GPIO コントローラーのレジスタとの間でデータと制御情報を転送します。 これらの I/O 要求はパッシブ レベルのスレッドから送信されるため、同期的に送信できます。

MemoryMappedController フラグ ビットの詳細については、「割り込み関連のコールバック」を参照してください。

アクティブと両方の割り込みは、エッジによってトリガーされる割り込みであり、割り込み要求は、割り込みラインで低から高または高から低への遷移によって示されます。 低から高への遷移が割り込み要求を通知した後、高から低への遷移が次の割り込み要求を通知するまで、割り込みラインは高いままです。 同様に、高から低への遷移が割り込み要求を通知した後、低から高への遷移が次の割り込み要求を通知するまで、割り込みラインは低いままになります。

プッシュ ボタン デバイスは、通常、アクティブと両方の割り込みに接続されます。 ユーザーがボタンを押すと割り込みが生成され、ボタンが離されると別の割り込みが生成されます。 デバイス ドライバーの ISR がアクティブと両方の割り込みに接続されている場合、ISR は信号線の立ち上がりと立ち下がりの両方のエッジで呼び出されます。

一部の GPIO コントローラーでは、ハードウェアにアクティブと両方の割り込み入力が実装されています。 ただし、ハードウェアがアクティブと両方の割り込みをサポートしていない場合、GPIO コントローラー ドライバーは、GpioClx がソフトウェアでアクティブと両方の割り込みをエミュレートするように要求するように EmulateActiveBoth フラグを設定します。 このフラグを設定するドライバーは 、CLIENT_ReconfigureInterrupt コールバック関数を実装する必要があります。 アクティブとローの両方の割り込みピンをエミュレートするために、GpioClx はこの関数を呼び出して、アクティブ/ハイ/アクティブ/ロー レベル モード割り込み用に GPIO ピンを交互に構成します。

要件

要件
サポートされている最小のクライアント Windows 8 以降でサポートされています。
Header gpioclx.h

こちらもご覧ください

CLIENT_CONTROLLER_BASIC_INFORMATION

CLIENT_QueryActiveInterrupts

CLIENT_ReadGpioPins

CLIENT_ReadGpioPinsUsingMask

CLIENT_ReconfigureInterrupt

CLIENT_WriteGpioPins

CLIENT_WriteGpioPinsUsingMask

GPIO_CLIENT_REGISTRATION_PACKET