Hi,
I am working with a custom carrier board on the Jetson AGX Orin.
I am running Jetpack Version 5.1.2 with L4T 35.4.1.
The carrier board connectivity is very similar to the DevKit with a few tweaks. I am mostly trying to figure out if the adjustments that I made to the devicetree for compatibility are correct and if I need to reprogram the CYPD4226.
The port functions correctly for programming. The USB (2.0 & 3.x) signals are the same for the port, but the CYPD4226 signals are tied to the P1 port instead of the P2 port. Functionally, this is J39 for power and J40 for signals. As I mentioned prior, I can program using the port. I can also receive power in the system and have received ~30W of power through the port @ 20V. When the port is disconnected, I see 0V at VBUS, 0V at one CC pin, and 1.8V at the other CC pin.
In my device tree, the adjustments I’ve made are as follows:
In the I2C node, I swapped the contents of ccg_typec_con0 and ccg_typec_con1.
/* Edited because I found a type in that the ccg_typec_con1 was a subnode of ccg_typec_con0. I fixed that, but the system is still not working.
i2c@c240000 {
ucsi_ccg: ucsi_ccg@8 {
status = "okay";
compatible = "nvidia,ccgx-ucsi";
ccgx,firmware-build = "gn";
reg = <0x08>;
interrupt-parent = <&tegra_main_gpio>;
interrupts = <TEGRA234_MAIN_GPIO(Y, 4) IRQ_TYPE_LEVEL_LOW>;
interrupt-names = "wakeup";
wakeup-source;
ccg_typec_con0: connector@0 {
compatible = "usb-c-connector";
label = "USB-C";
data-role = "dual";
port {
ucsi_ccg_p0: endpoint {
remote-endpoint = <&usb_role_switch0>;
};
};
};
ccg_typec_con1: connector@1 {
compatible = "usb-c-connector";
label = "USB-C";
data-role = "host";
};
};
…
};
Under the xusb_padctl: xusb_padctl@3520000 node, I set the remote-endpoint for usb2-0 to _p0 instead of _p1:
ports {
usb2-0 {
mode = "otg";
usb-role-switch;
status = "okay";
port {
usb_role_switch0: endpoint {
remote-endpoint = <&ucsi_ccg_p0>;
};
};
};
I don’t believe any other changes should be required unless there are updates needed in the CYPD4226 programming as well.
For some additional details, if I fully disconnect the system --DC Power & USB – then plug in USB, turn on DC power, then boot the system to Linux, the I2C works fine even though USB does not. I can unplug and plug in the USB connected to the laptop and I2C continues to function. If I unload the module then reload it, the I2C port no longer responds until a reboot.
The messages I get, when I2C has dropped out, are as follows:
[ 1619.298413] tegra-i2c c240000.i2c: I2C transfer timed out
[ 1619.304615] ucsi_ccg 1-0008: i2c_transfer failed -110
[ 1627.798463] tegra-i2c c240000.i2c: I2C transfer timed out
[ 1627.805720] ucsi_ccg 1-0008: i2c_transfer failed -110
[ 1627.811010] ucsi_ccg 1-0008: ucsi_ccg_init failed - -110
[ 1627.817651] ucsi_ccg: probe of 1-0008 failed with error -110
Full dmesg attached.
dmesg_usb.txt (76.5 KB)
Thanks for any help,
Joe