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 に設定する必要があります。 _UPC。PortConnectorType バイトは、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 」 を参照してください。