USB4 ACPI 要件

この記事では、USB4 デバイスと Advanced Configuration and Power Interface (ACPI) デバイスのインターフェイス方法について説明します。 ACPI デバイスは、Advanced Configuration and Power Interface (ACPI) 仕様で定義されています。

USB4 の _OSC (オペレーティング システム機能)

BIOS では、ACPI 6.4 仕様に従って、USB4 接続マネージャーに制御を許可する必要があります。 システムで、プラットフォーム全体のオペレーティング システムの電源管理 (OSPM) 機能でネイティブ USB4 サポートの制御を許可する必要があります。 [クエリ フラグ] が 0 に設定され、[ネイティブ USB4 サポート] が 1 に設定されているオペレーティング システムによって _OSC が呼び出されると、制御が許可されます。

さらに、USB 用の _OSC も実装する必要があります。 BIOS では、必要なポリシーまたはユーザー設定に従って、セキュリティ上の理由から PCIe トンネリングの制御が禁止されていることがあります。 ただし、USB トンネリング、DisplayPort™ トンネリング、ドメイン間 USB4 接続は常に有効されている必要があります。 USB トンネリング、DisplayPort™ トンネリング、またはドメイン間接続が無効になっている場合、デバイスは接続マネージャーによって失敗状態にされます。

上述のように両方の機能が実装されたら、PCIe バスによって、"PCI\USB4_MS_CM" のハードウェア ID が PCIe 列挙ホスト ルーターのハードウェア ID の一覧に追加されます。 これにより、プラグ アンド プレイで USB4 接続マネージャーのドライバーの読み込みが可能になります。

Screenshot of hardware ID for PCIe based host router.

Note

ネイティブ USB4 サポート用の _OSC 設定または USB 用の _OSC 設定は、休止状態 (S4) の遷移をまたがって変更することはできません。 このような設定が変更された場合は、完全な再起動が必要です。

USB 3.x および PCIe のポート マッピング (_DSD)

PCIe および USB 3.x ソフトウェア スタックで USB4 ホスト ルーターとの電源関係を確立するには、トンネル接続された PCIe および USB 3.x ポート用のデバイス固有のデータ (_DSD) が必要です。 これが存在しない場合、USB4 ドメインは、トンネル接続された PCIe および USB 3.x デバイスとの調整なしで電源オフされることがあります。

Note

ホスト インターフェイス インスタンスは、常に 3 ビットの数字 (0 から 7) で終わる必要があります。

ACPI ソース言語 (ASL) のポート マッピングの例を次に示します。

Scope (\_SB.PCI0)
{
  Device (NHI0) { } //Host interface instance must always end with a 3-bit digit (0-7). 
  Device (DSB0) //Tunneled PCIe port instance
  {
    Name (_DSD, Package () {
      ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), //Device Properties UUID 
      Package () {
        Package () { "usb4-host-interface", \_SB.PCI0.NHI0 },
        Package () { "usb4-port-number", PortInstance#}, // PortInstance# is unused and can be 0
      }
    })
  }
…
  Device (SS01) // e.g. Tunnel capable USB 3.x super speed port under RHUB
  {
    …
    Name (_DSD, Package () {
      ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), //Device Properties UUID 
      Package () {
        Package () { "usb4-host-interface", \_SB.PCI0.NHI0 },
        Package () { "usb4-port-number", PortInstance#}, // PortInstance# is unused and can be 0
      }
    })
  }

USB ポート機能 (_UPC) を記述するための既存の USB 要件は、USB4 では変更されないままです。

PCIe ポートの追加要件

USB4 に関連付けられている PCIe ルート ポートは、D3 状態になっている間にホット プラグ イベントを処理可能として指定する必要があります。 詳細については、「D3 でのホット プラグをサポートする PCIe ルート ポートの識別」および「外部に公開されている PCIe ルート ポートの識別」を参照してください。

PCIe ルート ポートは、_S0W および _CRS、または _PRW メソッドを使用して、D3Cold から復帰可能として適切にマークされている必要があります。 _S0W および _CRS または _PRW に関する詳細については、「ACPI の仕様」と「D3cold のファームウェア要件」を参照してください。

ホスト間接続のデータ ロール スワップを防止するデバイス固有のメソッド

特定のプラットフォームの Windows システムの UCSI OPM ドライバーでは、UCSI の "Set USB Operation Role" (SET_UOR) コマンドを使用して USB データ ロール スワップを要求することで、USB 接続の USB データ ロールを修正しようとする場合があります。 ただし、そのような接続のどちらの側でもこのロールの修正が開始される可能性があるので、これはホスト間接続に影響を与える場合があります。 この問題に対処するには、UCSI OPM のデータ ロールの修正を無効にする必要があることを要求するために、次のようにプラットフォームで UCSI デバイスの下に ACPI _DSM メソッドを実装する必要があります。

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

UCSI OPM で USB データ ロールの修正を無効にするには、Windows で、以下で説明する関数を持つデバイス固有のメソッド (_DSM) を定義します。

関数 4: UCSI OPM で USB データ ロールの修正を無効にする

引数

Arg0: UUID = 6F8398C2-7CA4-11E4-AD36-631042B5008F

Arg1: リビジョン ID = 0

Arg2: 関数インデックス = 4

Arg3: 空のパッケージ (未使用)

戻り値

次のいずれかの値を含む整数:

要素 オブジェクトの種類 説明
無効 4 バイト (32 ビット) の unsigned long UCSI OPM のロール修正を無効にするかどうかを指定します。
0x00 (既定) - USB データ ロールの修正を無効にしません。
0x01 - UCSI OPM で USB データ ロールの修正を無効にします。

この関数を使用する場合、_DSM は UCSI デバイスの下に表示される必要があります。

Note

すべての _DSM の関数インデックス 0 は、サポートされている関数インデックスのセットを返すクエリ関数です。 これは常に必要です。 詳細については、ACPI 6.4 仕様の 9.1.1 _DSM (デバイス固有のメソッド) に関するセクションを参照してください。

こちらもご覧ください

"Thunderbolt は Intel Corporation またはその子会社の商標です。"

"「USB4™」は USB Implementers Forum の商標であり、USB4™ 仕様に基づいた製品またはこれに準拠した製品での使用のみが認められています。"