Hello,
I am working on a custom carrier board for a Jetson Orin NX 16GB module.
Currently, everything is working correctly except the USB-C. My target is replicate the same USB-C from the EVK on my custom carrier (USBSS1 and USB0 signals).
The only hardware difference is that instead of using the FUSB301 mux, I am using the HD3SS3220. This HD3SS3220 is configured by hardware, so it should work immediately once powered.
Below, I show the schematic from the module to the connector:
Jetson module:
HD3SS3220 component configured by hardware:
USB-C connector:
Device tree updated:
xusb_padctl: xusb_padctl@3520000 {
status = "okay";
pads {
usb2 {
lanes {
usb2-0 {
nvidia,function = "xusb";
status = "okay";
};
usb2-1 {
nvidia,function = "xusb";
status = "okay";
};
usb2-2 {
nvidia,function = "xusb";
status = "okay";
};
};
};
usb3 {
lanes {
usb3-0 {
nvidia,function = "xusb";
status = "okay";
};
usb3-1 {
nvidia,function = "xusb";
status = "okay";
};
};
};
};
ports {
usb2-0 {/* Goes to recovery port */
mode = "otg";
status = "okay";
vbus-supply = <&p3768_vdd_5v_sys>;
usb-role-switch;
};
usb2-1 {/* Goes to hub */
mode = "host";
vbus-supply = <&p3768_vdd_av10_hub>;
status = "okay";
};
usb2-2 {/* Goes to M2.E */
mode = "host";
vbus-supply = <&p3768_vdd_5v_sys>;
status = "okay";
};
usb3-0 {/* Goes to hub */
nvidia,usb2-companion = <1>;
status = "okay";
};
usb3-1 {/* Goes to J5 */
nvidia,usb2-companion = <0>;
status = "okay";
};
};
};
tegra_xudc: xudc@3550000 {
status = "okay";
phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-0}>,
<&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-1}>;
phy-names = "usb2-0", "usb3-1";
nvidia,xusb-padctl = <&xusb_padctl>;
};
tegra_xhci: xhci@3610000 {
status = "okay";
phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-0}>,
<&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-1}>,
<&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-2}>,
<&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-0}>,
<&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-1}>;
phy-names = "usb2-0", "usb2-1", "usb2-2", "usb3-0", "usb3-1";
nvidia,xusb-padctl = <&xusb_padctl>;
};
i2c@c240000{
status = "okay";
Next logs are shown sometimes (not always) in dmesg when something is connected and disconnected from the USB-C port:
[lun jun 10 11:59:37 2024] pcieport 0004:00:00.0: AER: Corrected error received: 0004:00:00.0
[lun jun 10 11:59:37 2024] pcieport 0004:00:00.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID)
[lun jun 10 11:59:37 2024] pcieport 0004:00:00.0: device [10de:229c] error status/mask=00000001/0000e000
[lun jun 10 11:59:37 2024] pcieport 0004:00:00.0: [ 0] RxErr
[lun jun 10 11:59:37 2024] pcieport 0004:00:00.0: AER: Corrected error received: 0004:00:00.0
[lun jun 10 11:59:37 2024] pcieport 0004:00:00.0: AER: can't find device of ID0000
[lun jun 10 11:59:37 2024] pcieport 0004:00:00.0: AER: Multiple Corrected error received: 0004:00:00.0
[lun jun 10 11:59:37 2024] pcieport 0004:00:00.0: AER: can't find device of ID0000
Any idea of what the problem might be or which way to go?