Uso de ACPI para configurar puertos USB en un equipo
Si el sistema requiere cambios en el BIOS ACPI para reflejar con precisión la configuración del puerto USB, debe considerar la capacidad del usuario de conectar un dispositivo al puerto al configurar el puerto.
Si usa ACPI para especificar la configuración de un puerto USB, debe definir los objetos de descripción de ubicación física (_PLD) y capacidades del puerto USB (_UPC). Aunque la especificación ACPI 6.0 no prohíbe específicamente el uso de solo el objeto _UPC , el uso de ambos objetos indica con más precisión la capacidad del usuario para conectar dispositivos al puerto. Usar solo el objeto _UPC podría no establecer correctamente la agrupación de contenedores de dispositivos o según lo previsto.
Los dispositivos conectados al puerto se pueden mover desde el centro si se establece el bit DeviceRemovable . En la tabla siguiente se muestra cómo los valores de los objetos ACPI de un puerto determinado afectan al valor del descriptor de concentrador USB DeviceRemovable bit que Windows notifica para el dispositivo.
Estado del puerto USB | Ejemplo | _UPC. Byte portIsConnectable | _PLD. Bit UserVisible (bit 64) | Valor de bit extraíble resultante |
---|---|---|---|---|
El puerto es visible y el usuario puede conectarse y desconectar dispositivos libremente. |
El puerto se expone en la cara de un panel del equipo que es visible para el usuario. |
Set (0xFF) |
Set (1) |
Set |
El puerto está oculto o interno y el usuario no puede conectarse y desconectar dispositivos libremente. |
El puerto está conectado directamente a un dispositivo integrado, como una cámara web portátil o un concentrador USB interno. |
Set (0xFF) |
Desactivado |
Desactivado |
El puerto lo implementa físicamente el controlador de host USB, pero no se usa. |
El puerto es un puerto excesivo que no está conectado a un terminal de conector de puerto o a un dispositivo integrado. |
Borrado (0x00) |
Borrar |
Desactivado |
Nota Es una configuración no válida para definir un puerto como no conectable, pero visible para el usuario.
En los ejemplos siguientes se muestra el lenguaje de origen ACPI (ASL) correcto que muestra el uso de los objetos _UPC y _PLD para describir un puerto USB:
Para especificar un puerto interno (no visible para el usuario) y se puede conectar a un dispositivo integrado, el _UPC. El byte PortIsConnectable debe establecerse en 0xFF y el _PLD. El bit UserVisible debe establecerse en 0.
En el ejemplo siguiente, el dispositivo se agrupa con el contenedor de dispositivos del equipo.
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 un puerto externo (visible para el usuario) y que se puede conectar a un dispositivo externo, el _UPC. El byte PortIsConnectable debe establecerse en 0xFF y el _PLD. El bit UserVisible debe establecerse en 1. El _UPC. El byte PortConnectorType debe establecerse en el tipo de conector USB adecuado, tal como se especifica en la sección 9.13 de la especificación ACPI 3.0.
En el ejemplo siguiente, el dispositivo tiene asignado un nuevo contenedor de dispositivos y se muestra como un dispositivo físico independiente.
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})
Un conector USB type-C debe describirse correctamente en ACPI para superar la prueba del kit de laboratorio de hardware de validación ACPI de tipo C USB .
Ejemplo _UPC para un conector USB type-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 obtener más información sobre la interfaz ACPI 6.0, vea Advanced Configuration and Power Interface Specification Revision 6.0.