ACPI を使用したコンピューターへの USB ポートの構成

USB ポートの構成を正確に反映するためにシステムで ACPI BIOS の変更が必要な場合は、ポートを構成するときにデバイスをポートに接続するユーザーの機能を考慮する必要があります。

ACPI を使用して USB ポートの構成を指定する場合は、USB ポート機能 (_UPC) と物理的な場所の説明 (_PLD) オブジェクトを定義する必要があります。 ACPI 6.0 仕様では、_UPC オブジェクトのみの使用は特に禁止されていませんが、両方のオブジェクトを使用することは、ユーザーがデバイスをポートに接続する能力をより正確に示しています。 _UPC オブジェクトのみを使用すると、デバイス コンテナーのグループ化が正しく、または想定どおりに設定されない可能性があります。

ポートに接続されたデバイスはハブから取り外し可能 DeviceRemovable ビットがセットされています。 次の表は、特定のポートの ACPI オブジェクトの値が、Windows がデバイスについて報告する USB ハブ記述子 DeviceRemovable ビットの値にどのように影響するかを示しています。

USB ポートの状態 _UPC.PortIsConnectable バイト _Pld。UserVisible ビット (ビット 64) 結果の DeviceRemovable ビット値

ポートが表示され、ユーザーはデバイスの接続と切断を自由に行うことができます。

ポートは、ユーザーに表示されるコンピューター上のパネルの面で開示されます。

Set (0xFF)

セット (1)

Set

ポートは非表示または内部であり、ユーザーはデバイスの接続と切断を自由に行うことはできません。

ポートは、ノート PC Web カメラや内部 USB ハブなどの統合デバイスに直接ハードワイヤードされます。

Set (0xFF)

クリア

クリア

ポートは USB ホスト コントローラーによって物理的に実装されますが、使用されません。

ポートは、ポート プラグ ターミナルまたは統合デバイスに接続されていない余分なポートです。

クリア (0x00)

Clear

クリア

注: ポートを接続できないがユーザーに表示されるように定義するのは無効な構成です。

次の例は、USB ポートを記述する_UPCオブジェクトと_PLD オブジェクトの使用方法を示す正しい形式の ACPI ソース言語 (ASL) を示しています。

  • 内部 (ユーザーに表示されない) で、統合デバイスに接続できるポートを指定するには、 _UPC.PortIsConnectable バイトは、0xFFと _PLD.UserVisible ビットは 0 に設定する必要があります。

    次の例では、デバイスはコンピューターのデバイス コンテナーでグループ化されています。

    Name(_UPC, Package(){
        0xFF,         // Port is connectable
        0xFF,         // Connector type (N/A for non-visible ports)
        0x00000000,   // Reserved 0, must be zero
        0x00000000})  // Reserved 1, must be zero
    
    Name(_PLD, Buffer(0x10){
        0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x30, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
    
  • 外部 (ユーザーに表示) で、外部デバイスに接続できるポートを指定するには、 _UPC.PortIsConnectable バイトは、0xFFと _PLD.UserVisible ビットは 1 に設定する必要があります。 _UPCPortConnectorType バイトは、ACPI 3.0 仕様のセクション 9.13 で指定されている適切な USB コネクタの種類に設定する必要があります。

    次の例では、デバイスに新しいデバイス コンテナーが割り当てられ、別の物理デバイスとして表示されます。

    Name(_UPC, Package(){
        0xFF,         // Port is connectable
        0x00,         // Connector type, Type 'A' in this case
        0x00000000,   // Reserved 0, must be zero
        0x00000000})  // Reserved 1, must be zero
    
    Name(_PLD, Buffer(0x10){
        0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
    

USB Type-C ACPI 検証ハードウェア ラボ キットテストに合格するには、USB Type-C コネクタを ACPI で正しく記述する必要があります。

USB Type-C コネクタの_UPC 例。

      Name(_UPC, Package(4){
        0x01,                       // Port is connectable
        0x09,                       // Connector type: Type C connector - USB2 and SS with Switch
        0x00000000,                 // Reserved0 – must be zero
        0x00000000})                // Reserved1 – must be zero

ACPI 6.0 インターフェイスの詳細については、「 Advanced Configuration and Power Interface Specification Revision 6.0 」 を参照してください。