その他の ACPI 名前空間オブジェクト

一部の特定のクラスのデバイスでは、追加の Advanced Configuration および Power Interface (ACPI) 名前空間オブジェクトが名前空間内のデバイスの下に表示される必要があります。 このセクションでは、SoC ベースのプラットフォームに必要な追加オブジェクトの一覧を示します。

プロセッサ識別オブジェクト

プロセッサは、ACPI 名前空間に列挙する必要があります。 プロセッサは、プラットフォーム上の他のデバイスと同様に、「Device」 ステートメントを使用して \_SB で宣言されます。 プロセッサ デバイスには、次のオブジェクトが含まれていることが必要です。

  • _HID: ACPI0007
  • _UID: MADT 内のプロセッサのエントリに一致する一意の数字。

表示固有のオブジェクト

表示固有のオブジェクトの詳細については、ACPI 5.0 仕様の付録 B「ビデオ拡張機能」を参照してください。

表示固有のオブジェクトの要件

Method 説明 要件
_DOS 出力を有効/無効に切り替えます。 システムがディスプレイの切り替えまたは LCD の明るさレベルをサポートしている場合に必要です。
_DOD ディスプレイ アダプターに接続されているすべてのデバイスを列挙します。 内蔵コントローラが出力の切り替えをサポートする場合に必要です。
_ROM ROM データを取得する ROM イメージが独自の形式で格納されている場合に必要です。
_GPD POST デバイスを取得します。 _VPOが実装されている場合に必要。
_SPD POST デバイスを設定します。 _VPOが実装されている場合に必要。
_VPO ビデオ POST オプション。 システムがポスト VGA デバイスの変更をサポートしている場合に必要です。
_ADR このデバイスの一意の ID を返します。 必須。
_BCL サポートされている明るさ制御レベルのクエリ 一覧。 埋め込み LCD が明るさ制御をサポートする場合に必要です。
_BCM 明るさレベルを設定します。 _BCL が実装されている場合に必要。
_DDC このデバイスの EDID を返します。 埋め込み LCD が標準インターフェイス経由の EDID の戻り値をサポートしていない場合に必要です。
_DCS 出力デバイスの状態を返します。 システムがディスプレイの切り替え (ホットキーを介して) をサポートしている場合に必要です。
_DGS グラフィックスの状態を照会します。 システムがディスプレイの切り替え (ホットキーを介して) をサポートしている場合に必要です。
_DSS デバイスの状態設定。 システムがディスプレイの切り替え (ホットキーを介して) をサポートしている場合に必要です。

USB ホスト コントローラーとデバイス

USB ホスト コントローラーは、内部デバイスと外部デバイスを接続するために SoC プラットフォームで使用されます。 Windows には、EHCI または XHCI 仕様に準拠している標準 USB ホスト コントローラー用の受信トレイ ドライバーが含まれています。

SoC ベースのプラットフォームでは、USB ホスト コントローラーを ACPI で列挙できます。 Windows では、互換性のある USB ハードウェアを列挙および構成するときに、次の ACPI 名前空間オブジェクトが使用されます。

  • ベンダー割り当て ACPI 準拠ハードウェア ID (_HID)。

  • 名前空間に USB コントローラーのインスタンスが複数存在する場合 (つまり、同一のデバイス識別オブジェクトがある 2 つ以上のノード)、一意の ID (_UID) オブジェクト。

  • EHCI または XHCI Standard 準拠 USB ホスト コントローラー (EHCI: PNP0D20)、(XHCI: PNP0D10) の互換性 ID (_CID)。

  • USB コントローラーに割り当てられている現在のリソース設定 (_CRS)。 コントローラーのリソースは、適切なハードウェア インターフェイス仕様 (EHCI または XHCI) で説明されています。

USB のデバイス固有のメソッド (_DSM)

Windows では、USB サブシステムのデバイス クラス固有の構成をサポートするために、デバイス固有のメソッド (_DSM) が定義されています。 詳細については、USB デバイス固有のメソッドを参照してください。

USB 統合トランザクション トランスレーター (TT) のサポート (_HRV)

標準の EHCI ホスト コントローラーでは、高速 USB デバイスのみがサポートされます。 SoC プラットフォームでは、Windows は、低速および全速 USB デバイス用の統合トランザクション トランスレーターを実装する EHCI 準拠ホスト コントローラーの 2 つの一般的な設計をサポートしています。 ハードウェア リビジョン (_HRV) オブジェクトは、USB ホスト コントローラー ドライバーへの統合 TT サポートの種類を示します。

_HRVは、次の条件に従って設定されます。

  • NoIntegratedTT - _HRV = 0

    標準 EHCI ホスト コントローラーは統合トランザクション トランスレーターを実装せず、_HRV値 0 はこれらのコントローラーでのみ有効です。 これらのコントローラーの _HRV オブジェクトを含める必要はありません。

  • IntegratedTTSpeedInPortSc - _HRV = 1

    統合 TT サポートを有効にします。 このインターフェイスのフレーバーには、PORTSC レジスタ自体に LowSpeed ビットと HiSpeed ビットが含まれます。 これらのビットはそれぞれビット オフセット 26 と 27 にあります。 速度を決定すると、EHCI ドライバーは PORTSC を読み取り、これらのビットから速度情報を抽出します。

  • IntegratedTTSpeedInHostPc - _HRV = 2

    統合 TT サポートを有効にします。 このインターフェイスのフレーバーには、別の HOSTPC レジスタに LowSpeed ビットと HiSpeed ビットが含まれます。 EHCI ドライバーは、ポート速度を決定する必要がある場合、目的のポートに対応する HOSTPC レジスタを読み取り、速度情報を抽出します。

USB XHCI D3cold のサポート

選択的な一時停止に加えて、XHCI コントローラーに接続されている内部 USB デバイスを D3cold 状態にして、使用していない場合は電源をオフにすることができます。 詳細については、「デバイスの電源管理」を参照してください。 すべての USB デバイス関数ドライバーは、D3cold にオプトインする必要があります。

USB ポート固有のオブジェクト

Windows では、システム上の USB ポートの可視性と接続機能を認識する必要があります。 これは、ポートとデバイスに関する正確な情報をユーザーに提供するために必要です。 この目的には、物理デバイスの場所 (_PLD) と USB ポート機能 (_UPC) の 2 つのオブジェクトが使用されます。 詳細については、「

SD ホスト コントローラーとデバイス

SD ホスト コントローラーは、ストレージおよび I/O デバイスにアクセスするために SoC プラットフォームで使用されます。 Windows には、SDA 標準ホスト コントローラー ハードウェア用の受信トレイ ドライバーが含まれています。 このドライバーとの互換性を確保するには、SD ホスト コントローラー デバイスが SD アソシエーションの SD ホスト コントローラー仕様に準拠している必要があります。

SoC プラットフォームでは、SD ホスト コントローラーを ACPI で列挙できます。 Windows では、互換性のある SD ハードウェアを列挙および構成するときに、次の ACPI 名前空間オブジェクトが使用されます。

  • ベンダー割り当て ACPI 準拠ハードウェア ID (_HID)。

  • 名前空間に SD コントローラーのインスタンスが複数存在する場合 (つまり、同一のデバイス識別オブジェクトがある 2 つ以上のノード)、一意の ID (_UID) オブジェクト。

  • SDA 標準準拠 SD ホスト コントローラー (PNP0D40) の互換性 ID (_CID)。

  • コントローラーに割り当てられている現在のリソース設定 (_CRS)。 コントローラーのリソースは次のように記述されます。

    • 実装されているすべてのスロットのハードウェア リソースが含まれています。 スロットは、メモリまたは I/O デバイスの SDIO バス上の接続ポイントです。 各スロットは、接続されているデバイスとの通信に使用される、SD ホスト コントローラーの標準のレジスタ セットと割り込みに関連付けられています。 SD ホスト コントローラーは任意の数のスロットを実装できますが、SoC プラットフォームでは通常 1 つだけです。

    • スロット リソースは、スロット番号の順に一覧表示されます (スロット 0 のリソースは 1番目、スロット 1 のリソースは 2 番目など)。

    • 各スロットでは、リソースは次の順序で一覧表示されます。

      • スロットに設定された SD 標準レジスタのベース アドレス。

      • スロットの SD 標準割り込み。

      • スロットの GPIO 割り込みリソース。カードの挿入と削除を通知します (標準の SD カード検出インターフェイスがすべての電源状態でサポートされていない場合)。

      • カードが現在スロットにあるかどうかを読み取るためのスロットの GPIO 入力リソース (標準の SD カード検出インターフェイスがすべての電源状態でサポートされていない場合)。 挿入 / 削除割り込みと同じピンを使用します。

      • スロット内のカードが書き込み保護されているかどうかを読み取るための 2 番目の GPIO 入力リソース (標準の SD 書き込み保護インターフェイスがすべての電源状態でサポートされていない場合)。

割り込みは、ウェイク対応である必要があります (「SharedAndWake」または「ExclusiveAndWake」と記述)。

埋め込み SD デバイス

SD に接続されたデバイスは、SD バス ドライバーによって列挙されます。 プラットフォームに統合されている SD デバイスも、SD ホスト コントローラーの子として ACPI 名前空間に一覧表示する必要があります。 この要件により、オペレーティング システムは、ACPI オブジェクトによってデバイスに提供されるプラットフォーム固有の属性にバス列挙デバイスを関連付けることができます (たとえば、非リモート化、デバイスの電源状態、GPIO または SPB リソースの使用など)。 この関連付けを行うには、デバイス名前空間には、SDIO バス上のデバイスのアドレスを通信する Address (_ADR) オブジェクトが必要です。 _ADR オブジェクトは整数を返します。

SDIO バスの場合、この整数の値は次のように定義されます。

  • 高ワード – スロット番号 (0 – 最初のスロット)

  • 低ワード – 関数番号 (定義については SD 仕様を参照)。

埋め込み SD デバイス名前空間には、次も含める必要があります。

  • 0 を返す Remove メソッド (_RMV) オブジェクト (デバイスを削除できないことを示します)。

  • デバイスが必要とするサイドバンド リソースの _CRS オブジェクト (GPIO ピンや SPB 接続など) が必要な場合。

イメージング クラス デバイス (カメラ)

カメラ デバイスは、グラフィックス ドライバーまたは USB によって列挙できます。 どちらの場合も、適切な UI を表示できるように、Windows はカメラの物理的な位置を認識する必要があります。 これを行うには、システムのシャーシに組み込まれており、機械的に固定された方向を持つカメラ デバイスは、ACPI 名前空間に含まれており、物理デバイスの場所 (_PLD) オブジェクトを提供します。 これには以下が必要です。

  • 列挙子デバイス (GPU デバイスまたは USB デバイス) の子 (入れ子になったデバイス) として表示されるカメラ デバイス。

  • 親デバイスのバス上のカメラのアドレスを含む Address (_ADR) オブジェクトを提供するカメラ デバイス。

    • USB については、次の章の「埋め込み USB デバイスの ACPI 名前空間階層と _ADR」を参照してください。

    • グラフィックスの場合、これは GPU デバイスで提供される _DOD メソッドで指定される識別子です。 詳細については、ACPI 5.0 仕様の付録 B「ビデオ拡張機能」を参照してください。

  • _PLD オブジェクトを提供するカメラ デバイス。

  • カメラ ドライバーで必要なサイドバンド リソース (GPIO 割り込み、I/O 接続、SPB 接続など) がある場合は、これらのリソースに対して_CRS オブジェクトが提供されます。

_PLD オブジェクトでは、Panel フィールド (ビット 67 ~ 69)、Lid フィールド (ビット 66)、Dock フィールド (ビット 65) が、カメラが取り付けられているサーフェスの値を修正するように設定されます。 その他のフィールドはすべてオプションです。 タブレットを含むハンドヘルド モバイル デバイスの場合、フロントパネルはディスプレイ画面を保持するものであり、ディスプレイが縦向きで表示されるとき、その原点は左下隅にあります。 このレファレンスを使用すると、「フロント」はカメラのビューがユーザーのほうを向いていること (Web カメラ) を示し 、「バック」はカメラのビューがユーザーのほうを向いていないこと (静止カメラまたはビデオ カメラ) を示します。 詳細については、ACPI 5.0 仕様の 6.1.8 章「_PLD (デバイスの物理的な場所)」を参照してください。

埋め込み USB デバイスの ACPI 名前空間階層と _ADR

ACPI 名前空間に埋め込み USB デバイスを追加する場合、デバイス ノードの階層は、Windows USB ドライバーによって列挙されているデバイスの階層と完全に一致する必要があります。 これは、「接続で表示」モードで Windows デバイス マネージャーを調べることで判断できます。 USB ホスト コントローラーから始まり、埋め込みデバイスまで拡張する階層全体を含める必要があります。 各デバイスのデバイス マネージャーで提供される「Address」プロパティは、ファームウェアがデバイスの_ADRで報告する必要があるアドレスです。

ACPI 5.0 仕様では、USB デバイスのアドレスが次のように定義されています。

USB ルート ハブ: ホスト コントローラーの子のみ。 0 の _ADR を持っている必要があります。 _ADR の他の子または値は許可されません。

USB ポート: ポート番号 (1 ~ n)

特定のポートに接続されている USB デバイスは、そのポートのアドレスを共有します。

ポートに接続されているデバイスが複合 USB デバイスの場合、複合デバイス内の関数は次のアドレスを使用する必要があります。

複合 USB デバイス内の USB 関数: 複合デバイスが接続されているポートのポート番号と、関数の最初のインターフェイス番号。 (算術加算)。

詳細については、「内部カメラの位置の特定」を参照してください。

ASL コード例

次の ASL コード例は、USB ポート 3 に直接接続されている USB Web カメラについて説明しています。

Device (EHCI) {
    ...  // Objects required for EHCI devices
    Device {RHUB) {         // the Root HUB
     Name (_ADR, ZERO)      // Address is always 0.
     Device (CAM0) {          // Camera connected directly to USB
                       //   port number 3 under the Root.
            Name (_ADR, 3)      // Address is the same as the port.
            Method (_PLD, 0, Serialized) {...}
            }  //  End of Camera device
    } // End of Root Hub Device
}  // End of EHCI device

次の ASL コード例では、関数 2 として Web カメラを実装する USB 複合デバイスについて説明します。

Device (EHCI) {
    ...  // Objects required for EHCI devices
    Device {RHUB) {
     Name (_ADR, ZERO)
     Device (CUSB) {        // Composite USB device
                    //   connected to USB port number 3
                    //   under the Root.
            Name (_ADR, 3)      // Address is the same as the port.
            Device (CAM0) { // Camera function within the
                    //   Composite USB device.
                Name (_ADR, 5)  // Camera function has a first
                    //   Interface number of 2, so
                    //   Address is 3 + 2  = 5.
                Method (_PLD, 0, Serialized) {...}
            }  //  End of Camera device
        } // End of Composite USB Device
    } // End of Root Hub Device
}  // End of EHCI device

次の ASL コード例では、I2C 経由で接続された Web カメラについて説明します。

Device (GPU0) {
    ... // Other objects required for graphics devices
    Name (_DOD, Package ()  // Identifies the children of this graphics device.
                // Each integer must be unique within the GPU0 namespace.
                {
                    0x00024321,  // The ID for CAM0. It is a non-VGA
                    //   device, cannot be detected by
                    //   the VGA BIOS, and uses a vendor-
                    //   specific ID format in bits 15:0
                    //   (see the _DOD specification).
                    ...     // Other child device IDs (for
                    //   example, display output ports)
                })
    Device (CAM0) {
        Name (_ADR, 0x00024321) // The identifier for this device
                    //   (Same as in _DOD above)
        Name (_CRS, ResourceTemplate()
            {
            // I2C Resource
            // GPIO interrupt resource(s), if required by
            //   driver
            // GPIO I/O resource(s), if required by driver
                ...
            })
        Method (_PLD, 0, Serialized) {...}
    } // End of CAM0 device
} // End of GPU0 device

HID-over-I2C デバイス

Windows には、ヒューマン インターフェイス デバイス (HID) のクラス ドライバーが含まれています。 このドライバーにより、さまざまな入力デバイス (タッチ パネル、キーボード、マウス、センサーなど) の汎用サポートが可能になります。 SoC プラットフォームでは、HID デバイスを I2C 経由でプラットフォームに接続でき、ACPI によって列挙されます。 Windows での HID クラスのサポートとの互換性のために、次の名前空間オブジェクトが使用されます。

  • ベンダー固有 _HID

  • PNP0C50 の _CID

  • 次がある _CRS:

    • デバイスにアクセスするための I2CSerialBusConnection リソース

    • 割り込み用の GpioInt リソース

  • HIDI2C _DSMデバイスの HID 記述子レジスタ アドレスを返すメソッドです。 詳細については、「HIDI2C デバイス固有のメソッド (_DSM)」を参照してください。

ボタン デバイス

SoC プラットフォームの場合、Windows では、ACPI 定義のコントロール メソッドの電源ボタンと Windows 互換の 5 ボタン配列の両方がサポートされています。 電源ボタンは、ACPI コントロール メソッドの電源ボタンとして実装されているか、または Windows 互換の Button 配列の一部として実装されているかに関係なく、次の処理を行います。

  • オフの場合、プラットフォームの電源がオンになります。

  • 押したままにすると、電源ボタンのオーバーライド イベントが生成されます。 詳細については、ACPI 5.0 仕様の 4.8.2.2.1.3 章「電源ボタンのオーバーライド」を参照してください。

コントロール メソッドの電源ボタン

組み込みのキーボードまたは接続されたキーボードを備えた他のシステムでは、GPIO シグナル化 ACPI イベント (ACPI 5.0 仕様の 5.6.5 章) を使用して、ACPI 定義の制御方法の電源ボタン (ACPI 5.0 仕様の 4.8.2.2.1.2 章) を実装します。 電源ボタン デバイスをサポートするために、名前空間は次のとおりです。

  • 電源ボタンの GPIO 割り込みピンを非共有 (排他) GPIO 割り込みリソースとして記述します。

  • 接続されている GPIO コントローラーの_AEI オブジェクト内の電源ボタンの GPIO 割り込みリソースを一覧表示します。

  • GPIO コントローラー デバイスの下に関連付けられたイベント メソッド (Lxx/Exx/EVT) を提供します。 このイベント メソッドは、ボタン イベントが発生したことをオペレーティング システムのコントロール メソッド ボタン ドライバーに通知します。

詳細については、「Windows 8 タブレットおよびコンバーチブル デバイスのハードウェア ボタン」を参照してください。

Windows 互換のボタン配列

スレートなどのタッチ優先 (キーボードレス) プラットフォームの場合、Windows には 5 つのボタンの配列用の汎用ドライバーが用意されています。 配列内の各ボタンには定義された関数があり (次の一覧の番号付き項目を参照)、特定の「長押し」ボタンの組み合わせは UI で追加の意味を持ちます。 電源ボタンを長押しする必要があるボタンの組み合わせは定義されていません。 Windows 受信トレイ ボタン ドライバーとの互換性のために、Windows と互換性のある Button Array ACPI デバイスが実装されています。 このデバイスは次のように定義されます。

  • 5 つのボタンはそれぞれ、プラットフォーム上の専用の割り込みピンに接続されています。

  • 各割り込みピンは、非共有 (排他) で両方のエッジ (ActiveBoth) に割り込むエッジ トリガー (Edge) 割り込みリソースとして構成されます。

  • デバイス名前空間には、ベンダー定義の _HID と PNP0C40 の _CID が含まれています。

  • _CRS オブジェクト内の GPIO 割り込みリソースは、次の順序で一覧表示されます。

    1. 「電源」ボタンに対応する割り込み

      「電源」ボタンは、ウェイク対応 (ExclusiveAndWake) であることが必要です。

    2. 「Windows」ボタンに対応する割り込み

      Windows ボタンは、ウェイク対応 (ExclusiveAndWake) であることが必要です。

    3. 「音量を上げる」ボタンに対応する割り込み

      「音量を上げる」ボタンは、ウェイク対応であることが必要です (排他を使用する必要があります)。

    4. 「音量を下げる」ボタンに対応する割り込み

      「音量を下げる」ボタンは、ウェイク対応であることが必要です (排他を使用する必要があります)。

    5. サポートされている場合は、「回転ロック」ボタンに対応する割り込み

      「回転ロック」ボタンは、ウェイク対応であることが必要です (排他を使用する必要があります)。

詳細については、「Windows 8 タブレットおよびコンバーチブル デバイスのハードウェア ボタン」を参照してください。

Windows ボタン UI の進化をサポートするために、Windows では Windows ボタン配列デバイスのデバイス固有のメソッド (_DSM) が定義されています。 詳細については、「Windows ボタン配列デバイス固有の方法 (_DSM)」を参照してください。

ドックおよびコンバーチブル PC センシング デバイス

Windows では、ACPI 名前空間で 2 つのセンシング デバイスを使用することで、ドックとコンバーチブル (クラムシェル / タブレット コンボ) がサポートされています。 これらのデバイスは、Windows 受信トレイ ボタン ドライバーでサポートされています。 Button Array デバイスに適用されるのと同じ要件は、これらのデバイスにも適用されることに注意してください。

  • GPIO ActiveBoth 割り込みは、(SPB に接続された GPIO コントローラーではなく) SoC 上の GPIO コントローラーに接続する必要があります。

  • GPIO コントローラーは、レベル モードの割り込みと動的極性の再設定をサポートする必要があります。

  • GPIO コントローラー ドライバーでは、GPIO フレームワーク拡張機能 (GpioClx) によって提供される ActiveBoth エミュレーションを使用する必要があります。

  • アサート状態 (「Docked」または「Converted」) がアサートされたロジック レベルが低い場合、GPIO ドライバー スタックの既定の動作をオーバーライドするには、GPIO コントローラー _DSM メソッドが必要です。 詳細については、「汎用 I/O (GPIO)」トピックの「GPIO コントローラー デバイス」章を参照してください。

詳細については、「Windows 8 タブレットおよびコンバーチブル デバイスのハードウェア ボタン」を参照してください。

ドック センシング デバイス

ドック センシング デバイスは、ドックがシステムに取り付けられたとき、またはシステムから外されたときに、システムを中断します。 このモード変更情報は、必要に応じてユーザーの入力と出力のエクスペリエンスを更新するために使用されます。 デバイスの名前空間には次のものが必要です。

  • ベンダー固有 _HID

  • PNP0C70 の _CID

  • 1 つの ActiveBoth 割り込みを含む _CRS

    割り込みをウェイク対応にすることはできません。

コンバーチブル PC センシング デバイス

コンバーチブル PC 検出デバイスは、コンバーチブル PC がタブレットからクラムシェル フォーム ファクターに切り替わると、システムを中断します。 このモード変更情報は、必要に応じてユーザーの入力と出力のエクスペリエンスを更新するために使用されます。 デバイスの名前空間には次のものが必要です。

  • ベンダー固有 _HID

  • PNP0C60 の _CID

  • 1 つの ActiveBoth 割り込みを含む _CRS

    割り込みをウェイク対応にすることはできません。