Hi,The TYPE-C port we use on the T5000 integrates USB3.2 and OTG 2.0. The identification and conversion chips used are FUSB301TMX and PI3DBS12212AZBEX.
When hot-plugging a USB3.2 flash drive while the system is powered on, there is a high probability that the 10Gb/s of USB3.2 will not be recognized, and it will only be recognized as a USB2.0 device.
However, after each time it is recognized as a USB2.0 device, if a reset operation is performed directly and then the system is restarted, it will be able to recognize the connected C port device as USB3.2 10Gb/s every time.
I would like to know how to identify and fix this problem. Looking forward to your reply very much.
This issue needs to check with the usb bus trace. Do you have a analyzer on your side?
We don’t have any ready-made analysis equipment at hand.
However, the A port on the same board performed very stably when recognizing USB 3.2. And why can it still be reliably recognized even after a restart?
Comparing that does not really help. One is a pure type A port while another one is passing through FUSB301.
I don’t see any device tree or schematic shared out either. Thus, unless you shared those things out, otherwise nothing to check here.
USB bus trace is still the most precise thing to check why downgrade speed happened.
Thanks,The following are device tree and schematic.
i2c@c600000 {
ina238@44 {
compatible = “ti,ina238”;
reg = <0x44>;
shunt-resistor = <2000>;
status = “okay”;
label = “VIN”;
};
fusb301@25 {
compatible = “onsemi,fusb301”;
reg = <0x25>;
status = “okay”;
#address-cells = <1>;
#size-cells = <0>;
interrupt-parent = <&gpio_aon>;
interrupts = <TEGRA264_AON_GPIO(AA, 2) IRQ_TYPE_LEVEL_LOW>;
//interrupts = <TEGRA264_AON_GPIO(AA, 2) IRQ_TYPE_EDGE_RISING>;
connector@0 {
port@0 {
fusb_p0: endpoint {
remote-endpoint = <&typec_p0>;
};
};
};
};
};
};
padctl@a808680000 {
status = “okay”;
pads {
usb2 {
lanes {
usb2-0 {
status = “okay”;
};
usb2-1 {
status = “okay”;
};
usb2-2 {
status = “okay”;
};
usb2-3 {
status = “okay”;
};
};
};
usb3 {
lanes {
usb3-0 {
status = “okay”;
};
usb3-1 {
status = “okay”;
};
usb3-2 {
status = “okay”;
};
};
};
};
ports {
usb2-0 {
mode = “otg”;
usb-role-switch;
//role-switch-default-mode = “peripheral”;
status = “okay”;
port {
typec_p0: endpoint {
remote-endpoint = <&fusb_p0>;
};
};
//mode = “otg”;
//status = “okay”;
//usb-role-switch;
//connector {
// compatible = “usb-b-connector”, “gpio-usb-b-connector”;
// label = “micro-USB”;
// type = “micro”;
// id-gpio = <&gpio_aon TEGRA264_AON_GPIO(AA, 2) GPIO_ACTIVE_HIGH>;
//};
};
usb2-1 {
mode = “host”;
status = “okay”;
};
usb2-2 {
mode = “host”;
status = “okay”;
};
usb2-3 {
mode = “host”;
status = “okay”;
};
usb3-0 {
nvidia,usb2-companion = <1>;
status = “okay”;
};
usb3-1 {
nvidia,usb2-companion = <2>;
status = “okay”;
};
usb3-2 {
nvidia,usb2-companion = <0>;
//maximum-speed = “super-speed”;
status = “okay”;
};
};
};
usb@a808670000 {
phys = <&{/bus@0/padctl@a808680000/pads/usb2/lanes/usb2-0}>,
<&{/bus@0/padctl@a808680000/pads/usb3/lanes/usb3-2}>;
phy-names = “usb2-0”, “usb3-2”;
status = “okay”;
};
Why is it related to the attached OTG interface?
I didn’t mean it is definitely related to OTG here. It is just type C port is more complicated than pure type A port so you should at least give out some info here.
As I already told, you may need to provide us the USB bus trace so that we could tell what is wrong.
Otherwise, what we could check is basically devicetree setting correctness because that is the only thing you could configure.
Have you tried the different side of type C there and see if behavior is different?
Is the USB bus trace the same as the PCB wiring?
Additionally, when OTG(USB0) is configured as the host, it can also stably recognize USB 3.2.
Is the USB bus trace the same as the PCB wiring?
No, USB bus trace means the log form USB protocol analyzer
Additionally, when OTG(USB0) is configured as the host, it can also stably recognize USB 3.2.
Yes, expected. That means the path going through FUSB301 still has problem.
You set it as host mode means it is more like the path from type A port.