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 1: Post-reset processing for dual-role controllers
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.
When this function is used, the _DSM method must appear under the USB controller device.
Function 2: Port type identification
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 |
When this function is used, the _DSM method must appear under the USB port device.
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.
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 |
When this function is used, the _DSM method must appear under the USB controller device.
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.