Compartilhar via


Usando ACPI para configurar portas USB em um computador

Se o sistema exigir alterações de BIOS de ACPI para refletir com precisão a configuração da porta USB, você deverá considerar a capacidade do usuário de conectar um dispositivo à porta ao configurar a porta.

Se você usar ACPI para especificar a configuração de uma porta USB, deverá definir os recursos de porta USB (_UPC) e os objetos de descrição de localização física (_PLD). Embora a especificação do ACPI 6.0 não proíba especificamente o uso apenas do objeto _UPC , o uso de ambos os objetos indica com mais precisão a capacidade do usuário de conectar dispositivos à porta. Usar apenas o objeto _UPC pode não definir o agrupamento de contêineres do dispositivo corretamente ou conforme o esperado.

Os dispositivos anexados à porta serão removíveis do hub se o bit DeviceRemovable estiver definido. A tabela a seguir mostra como os valores dos objetos ACPI de uma determinada porta afetam o valor do bit DeviceRemovable do descritor do hub USB que o Windows relata para o dispositivo.

Status da porta USB Exemplo _UPC. Byte PortIsConnectable _PLD. Bit UserVisible (bit 64) Valor de bit DeviceRemovable resultante

A porta está visível e o usuário pode se conectar e desconectar dispositivos livremente.

A porta é exposta na face de um painel no computador que está visível para o usuário.

Definir (0xFF)

Set (1)

Definir

A porta está oculta ou interna e o usuário não pode se conectar e desconectar dispositivos livremente.

A porta é diretamente conectada a um dispositivo integrado, como uma webcam de laptop ou um hub USB interno.

Definir (0xFF)

Desmarcada

Desmarcada

A porta é fisicamente implementada pelo controlador de host USB, mas não é usada.

A porta é uma porta em excesso que não está conectada a um terminal de plug-in de porta ou a um dispositivo integrado.

Desmarcado (0x00)

Limpar

Desmarcada

Nota É uma configuração inválida para definir uma porta como não conectável, mas visível para o usuário.

Os exemplos a seguir mostram ASL (Linguagem de Origem) acpi corretamente formada que demonstra o uso dos objetos _UPC e _PLD para descrever uma porta USB:

  • Para especificar uma porta interna (não visível pelo usuário) e que possa ser conectada a um dispositivo integrado, o _UPC. O byte PortIsConnectable deve ser definido como 0xFF e o _PLD. O bit UserVisible deve ser definido como 0.

    No exemplo a seguir, o dispositivo é agrupado com o contêiner do dispositivo do computador.

    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})
    
  • Para especificar uma porta externa (visível pelo usuário) e que possa ser conectada a um dispositivo externo, o _UPC. O byte PortIsConnectable deve ser definido como 0xFF e o _PLD. O bit UserVisible deve ser definido como 1. O _UPC. O byte PortConnectorType deve ser definido como o tipo de conector USB apropriado, conforme especificado na Seção 9.13 da especificação ACPI 3.0.

    No exemplo a seguir, o dispositivo recebe um novo contêiner de dispositivo e é exibido como um dispositivo físico separado.

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

Um conector USB Type-C deve ser descrito corretamente no ACPI para passar no teste do Kit de Laboratório de Hardware de Validação de ACPI do TIPO C USB .

Exemplo _UPC para um conector USB Tipo C:

      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

Para obter mais informações sobre a interface ACPI 6.0, confira Configuração Avançada e Revisão de Especificação do Power Interface 6.0.