Freigeben über


Verwenden von ACPI zum Konfigurieren von USB-Ports auf einem Computer

Wenn das System ACPI-BIOS-Änderungen erfordert, um die USB-Portkonfiguration genau widerzuspiegeln, sollten Sie beim Konfigurieren des Ports die Möglichkeit des Benutzers berücksichtigen, ein Gerät mit dem Port zu verbinden.

Wenn Sie ACPI verwenden, um die Konfiguration eines USB-Ports anzugeben, müssen Sie die Objekte USB-Portfunktionen (_UPC) und physische Standortbeschreibung (_PLD) definieren. Obwohl die ACPI 6.0-Spezifikation die Verwendung nur des _UPC-Objekts nicht ausdrücklich verbietet, gibt die Verwendung beider Objekte genauer an, dass der Benutzer Geräte mit dem Port verbinden kann. Wenn Sie nur das _UPC -Objekt verwenden , wird die Gerätecontainergruppierung möglicherweise nicht ordnungsgemäß oder wie erwartet festgelegt.

Geräte, die an den Port angeschlossen sind, können vom Hub entfernt werden, wenn das DeviceRemovable-Bit festgelegt ist. Die folgende Tabelle zeigt, wie sich die Werte der ACPI-Objekte für einen bestimmten Port auf den Wert des USB-Hub-Deskriptors DeviceRemovable auswirken, das Windows für das Gerät meldet.

USB-Anschlussstatus Beispiel _UPC. PortIsConnectable byte _PLD. UserVisible Bit (Bit 64) Resultierender DeviceRemovable Bit-Wert

Port ist sichtbar, und der Benutzer kann Geräte frei verbinden und trennen.

Port wird auf der Vorderseite eines Bereichs auf dem Computer verfügbar gemacht, der für den Benutzer sichtbar ist.

Festlegen (0xFF)

Festlegen (1)

Set

Der Port ist ausgeblendet oder intern, und der Benutzer kann Geräte nicht frei verbinden und trennen.

Der Anschluss wird direkt mit einem integrierten Gerät verbunden, z. B. einer Laptop-Webcam oder einem internen USB-Hub.

Festlegen (0xFF)

Gelöscht

Gelöscht

Der Port wird vom USB-Hostcontroller physisch implementiert, aber nicht verwendet.

Port ist ein überschüssiger Port, der nicht mit einem Anschlussterminal oder einem integrierten Gerät verbunden ist.

Gelöscht (0x00)

Clear

Gelöscht

Hinweis Es ist eine ungültige Konfiguration, um einen Port als nicht verbunden, aber für den Benutzer sichtbar zu definieren.

Die folgenden Beispiele zeigen eine korrekt formatierte ACPI-Quellsprache (ACPI Source Language, ASL), die die Verwendung der _UPC - und _PLD-Objekte zum Beschreiben eines USB-Ports veranschaulicht:

  • Um einen port anzugeben, der intern (nicht vom Benutzer sichtbar) ist und mit einem integrierten Gerät verbunden werden kann, _UPC. PortIsConnectable byte muss auf 0xFF und die _PLD festgelegt werden . UserVisible Bit muss auf 0 festgelegt werden.

    Im folgenden Beispiel wird das Gerät mit dem Gerätecontainer des Computers gruppiert.

    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})
    
  • Um einen port anzugeben, der extern ist (Benutzer sichtbar) und mit einem externen Gerät verbunden werden kann, _UPC. PortIsConnectable byte muss auf 0xFF und die _PLD festgelegt werden . UserVisible Bit muss auf 1 festgelegt werden. Der _UPC. PortConnectorType-Byte muss auf den entsprechenden USB-Anschlusstyp festgelegt werden, wie in Abschnitt 9.13 der ACPI 3.0-Spezifikation angegeben.

    Im folgenden Beispiel wird dem Gerät ein neuer Gerätecontainer zugewiesen und als separates physisches Gerät angezeigt.

    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})
    

Ein USB-Typ-C-Anschluss muss in ACPI ordnungsgemäß beschrieben werden, um den Test des USB Type-C ACPI Validation Hardware Lab Kit zu bestehen.

Beispiel _UPC für einen USB-Typ-C-Anschluss:

      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

Weitere Informationen zur ACPI 6.0-Schnittstelle finden Sie unter Advanced Configuration and Power Interface Specification Revision 6.0.