USB Device-Specific Method (_DSM)
To support device-class-specific configuration of the USB subsystem, Windows defines a Device-Specific Method (_DSM) that has the functions that are described in this article.
Function index 0 of every _DSM is a query function that returns the set of supported function indexes, and is always required. For more information, see section 9.14.1, "_DSM (Device Specific Method)", in the ACPI 5.0 specification.
Function 1: Post-reset processing for dual-role controllers
When this function is used, the _DSM method must appear under the USB controller device.
The _DSM control method parameters for the post-reset processing function for dual-role USB controllers are as follows:
Arguments (Function 1)
- Arg0: UUID = ce2ee385-00e6-48cb-9f05-2edb927c4899
- Arg1: Revision ID = 0
- Arg2: Function index = 1
- Arg3: Empty package (not used)
Return (Function 1)
None
The Windows inbox drivers only support USB controllers in host mode. After each controller reset, the USB driver will invoke the _DSM function index 1 to perform any controller-specific initialization required to configure the USB controller to operate in host mode.
Function 2: Port type identification
When this function is used, the _DSM method must appear under the USB port device.
The _DSM control method parameters for identifying the USB port type are as follows:
Arguments (Function 2)
- Arg0: UUID = ce2ee385-00e6-48cb-9f05-2edb927c4899
- Arg1: Revision ID = 0
- Arg2: Function index = 2
- Arg3: Empty package (not used)
Return (Function 2)
An integer containing one of the following values:
Element | Object type | Description |
---|---|---|
Port type | Integer (BYTE) | Specifies the type of the USB port: 0x00 – Regular USB 0x01 – HSIC 0x02 – SSIC 0x03 – 0xff reserved |
Function 5: Disable U1 and U2 transitions for a port
When this _DSM method returns 0x01 the USB bus driver disables U1 and U2 transitions for the port. If it returns 0x00 the USB bus driver falls back to its default heuristics for U1 and U2 transitions described in U1 and U2 transitions.
The _DSM method must appear under a USB3 port. It is available starting with Windows 10, version 2004 (Vibranium).
The _DSM control method parameters are as follows:
Arguments (Function 5)
- Arg0: UUID = ce2ee385-00e6-48cb-9f05-2edb927c4899
- Arg1: Revision ID = 0
- Arg2: Function index = 5
- Arg3: Empty package (not used)
Return (Function 5)
An integer containing one of the following values:
Element | Object type | Description |
---|---|---|
Disable U1 and U2? | Integer (BYTE) | Specifies the U1 and U2 behavior: 0x00 – The USB bus driver will fall back to its default heuristics for U1 and U2. 0x01 – U1 and U2 transitions will be disabled. 0x02 – 0xff reserved |
Function 6: Query controller register access type
This function is available starting in Windows Server 2022 and Windows 11.
When this function is used, the _DSM method must appear under the USB controller device.
The _DSM control method parameters for querying the register access type for communicating with USB controllers are as follows:
Arguments (Function 6)
- Arg0: UUID = ce2ee385-00e6-48cb-9f05-2edb927c4899
- Arg1: Revision ID = 0
- Arg2: Function index = 6
- Arg3: Empty package (not used)
Return (Function 6)
An Integer containing one of the following values:
Element | Object type | Description |
---|---|---|
RegisterAccessType | 4-byte (32-bit) unsigned long | Specifies the type of the USB controller register access: 0x00 – Undefined register access 0x01 – Must use 32bit register access 0x02 – 0xffffffff reserved |
Function 7: Query if _UPC supports USB-C port capabilities as defined in ACPI specification 6.5.
ACPI specification 6.5 updated _UPC with USB-C port capabilities. On the systems of ACPI specification earlier than 6.5, this _DSM method function can be used to indicate that the _UPC methods of USB ports of a USB hub have the USB-C port capabilities as defined in ACPI specfication 6.5.
When this function is used, the _DSM method must appear under a USB hub device.
The _DSM control method parameters are as follows:
Arguments (Function 7)
- Arg0: UUID = ce2ee385-00e6-48cb-9f05-2edb927c4899
- Arg1: Revision ID = 0
- Arg2: Function index = 7
- Arg3: Empty package (not used)
Return (Function 7)
An Integer as follows:
Element | Object type | Description |
---|---|---|
UpcSupportsUsbCPortCapabilities | Integer (BYTE) | 0x00: The _UPC methods of USB ports of this USB hub do not have USB-C port capabilities as defined in ACPI specification 6.5. 0x01: The _UPC methods of USB ports of this USB hub have USB-C port capabilities as defined in ACPI specification 6.5. 0x02 - 0xFF: Reserved. Do not use |