When DbC is enabled the first port on the xHC host acts as a usb device. xHC provides the descriptors automatically when the DbC device is enumerated. Most of the values are hardcoded, but some fields such as idProduct, idVendor, bcdDevice and bInterfaceProtocol can be modified. Add sysfs entries that allow userspace to change these. User can only change them before dbc is enabled, i.e. before writing "enable" to dbc sysfs file as we don't want these values to change while device is connected, or during enumeration. Add documentation for these entries in Documentation/ABI/testing/sysfs-bus-pci-drivers-xhci_hcd Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> Link: https://lore.kernel.org/r/20230317154715.535523-9-mathias.nyman@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
78 lines
3.1 KiB
Plaintext
78 lines
3.1 KiB
Plaintext
What: /sys/bus/pci/drivers/xhci_hcd/.../dbc
|
|
Date: June 2017
|
|
Contact: Lu Baolu <baolu.lu@linux.intel.com>
|
|
Description:
|
|
xHCI compatible USB host controllers (i.e. super-speed
|
|
USB3 controllers) are often implemented with the Debug
|
|
Capability (DbC). It can present a debug device which
|
|
is fully compliant with the USB framework and provides
|
|
the equivalent of a very high performance full-duplex
|
|
serial link for debug purpose.
|
|
|
|
The DbC debug device shares a root port with xHCI host.
|
|
When the DbC is enabled, the root port will be assigned
|
|
to the Debug Capability. Otherwise, it will be assigned
|
|
to xHCI.
|
|
|
|
Writing "enable" to this attribute will enable the DbC
|
|
functionality and the shared root port will be assigned
|
|
to the DbC device. Writing "disable" to this attribute
|
|
will disable the DbC functionality and the shared root
|
|
port will roll back to the xHCI.
|
|
|
|
Reading this attribute gives the state of the DbC. It
|
|
can be one of the following states: disabled, enabled,
|
|
initialized, connected, configured and stalled.
|
|
|
|
What: /sys/bus/pci/drivers/xhci_hcd/.../dbc_idVendor
|
|
Date: March 2023
|
|
Contact: Mathias Nyman <mathias.nyman@linux.intel.com>
|
|
Description:
|
|
This dbc_idVendor attribute lets us change the idVendor field
|
|
presented in the USB device descriptor by this xhci debug
|
|
device.
|
|
Value can only be changed while debug capability (DbC) is in
|
|
disabled state to prevent USB device descriptor change while
|
|
connected to a USB host.
|
|
The default value is 0x1d6b (Linux Foundation).
|
|
It can be any 16-bit integer.
|
|
|
|
What: /sys/bus/pci/drivers/xhci_hcd/.../dbc_idProduct
|
|
Date: March 2023
|
|
Contact: Mathias Nyman <mathias.nyman@linux.intel.com>
|
|
Description:
|
|
This dbc_idProduct attribute lets us change the idProduct field
|
|
presented in the USB device descriptor by this xhci debug
|
|
device.
|
|
Value can only be changed while debug capability (DbC) is in
|
|
disabled state to prevent USB device descriptor change while
|
|
connected to a USB host.
|
|
The default value is 0x0010. It can be any 16-bit integer.
|
|
|
|
What: /sys/bus/pci/drivers/xhci_hcd/.../dbc_bcdDevice
|
|
Date: March 2023
|
|
Contact: Mathias Nyman <mathias.nyman@linux.intel.com>
|
|
Description:
|
|
This dbc_bcdDevice attribute lets us change the bcdDevice field
|
|
presented in the USB device descriptor by this xhci debug
|
|
device.
|
|
Value can only be changed while debug capability (DbC) is in
|
|
disabled state to prevent USB device descriptor change while
|
|
connected to a USB host.
|
|
The default value is 0x0010. (device rev 0.10)
|
|
It can be any 16-bit integer.
|
|
|
|
What: /sys/bus/pci/drivers/xhci_hcd/.../dbc_bInterfaceProtocol
|
|
Date: March 2023
|
|
Contact: Mathias Nyman <mathias.nyman@linux.intel.com>
|
|
Description:
|
|
This attribute lets us change the bInterfaceProtocol field
|
|
presented in the USB Interface descriptor by the xhci debug
|
|
device.
|
|
Value can only be changed while debug capability (DbC) is in
|
|
disabled state to prevent USB descriptor change while
|
|
connected to a USB host.
|
|
The default value is 1 (GNU Remote Debug command).
|
|
Other permissible value is 0 which is for vendor defined debug
|
|
target.
|