Issue Description:We are using a Jetson AGX T5000 module on a custom carrier board. During FUSB301 driver adaptation, automatic role switching between host and device does not work. We would like to confirm whether our device tree configuration is correct. Additionally, the kernel seems to have parsing issues with the device tree as shown below.
The command below successfully switches the Type-C port between host and device modes when executed manually.
sudo sh -c ‘echo none > /sys/class/usb_role/usb2-0-role-switch/role’
sudo sh -c ‘echo host > /sys/class/usb_role/usb2-0-role-switch/role’
Do you need role-switch-default-mode = "peripheral";
Linux_for_Tegra/source/hardware/nvidia/t264/nv-public$ grep -irC4 "role-switch" nv-platform/tegra264-p4071-0000.dtsi
ports {
usb2-0 {
mode = "otg";
usb-role-switch;
role-switch-default-mode = "peripheral";
status = "okay";
};
https://www.kernel.org/doc/Documentation/devicetree/bindings/usb/generic.txt
Generic USB Properties
Optional properties:
- maximum-speed: tells USB controllers we want to work up to a certain
speed. Valid arguments are "super-speed-plus",
"super-speed", "high-speed", "full-speed" and
"low-speed". In case this isn't passed via DT, USB
controllers should default to their maximum HW
capability.
- dr_mode: tells Dual-Role USB controllers that we want to work on a
particular mode. Valid arguments are "host",
"peripheral" and "otg". In case this attribute isn't
passed via DT, USB DRD controllers should default to
OTG.
- phy_type: tells USB controllers that we want to configure the core to support
a UTMI+ PHY with an 8- or 16-bit interface if UTMI+ is
selected. Valid arguments are "utmi" and "utmi_wide".
In case this isn't passed via DT, USB controllers should
default to HW capability.
- otg-rev: tells usb driver the release number of the OTG and EH supplement
with which the device and its descriptors are compliant,
in binary-coded decimal (i.e. 2.0 is 0200H). This
property is used if any real OTG features(HNP/SRP/ADP)
is enabled, if ADP is required, otg-rev should be
0x0200 or above.
- companion: phandle of a companion
- hnp-disable: tells OTG controllers we want to disable OTG HNP, normally HNP
is the basic function of real OTG except you want it
to be a srp-capable only B device.
- srp-disable: tells OTG controllers we want to disable OTG SRP, SRP is
optional for OTG device.
- adp-disable: tells OTG controllers we want to disable OTG ADP, ADP is
optional for OTG device.
- usb-role-switch: boolean, indicates that the device is capable of assigning
the USB data role (USB host or USB device) for a given
USB connector, such as Type-C, Type-B(micro).
see connector/usb-connector.yaml.
- role-switch-default-mode: indicating if usb-role-switch is enabled, the
device default operation mode of controller while usb
role is USB_ROLE_NONE. Valid arguments are "host" and
"peripheral". Defaults to "peripheral" if not
specified.
This is an attribute to a USB controller such as:
dwc3@4a030000 {
compatible = "synopsys,dwc3";
reg = <0x4a030000 0xcfff>;
interrupts = <0 92 4>
usb-phy = <&usb2_phy>, <&usb3,phy>;
maximum-speed = "super-speed";
dr_mode = "otg";
phy_type = "utmi_wide";
otg-rev = <0x0200>;
adp-disable;
};
Hello, regarding the use of FUSB301 on Jetson Thor, have you tested it with USB 3.2 Gen 2 flash drives? We are using the same solution, and we’ve found that USB 3.2 Gen 2 flash drives are occasionally recognized as USB 2.0, while USB 3.2 Gen 1 flash drives work normally.Our engineers have tested and found that it is not a hardware signal issue, but rather seems to be a compatibility issue between the Thor platform USB and the FUSB301