Jetson Orin Nano USB0_VBUS_EN Carrier Board Useage

Hello,

I’m working on a custom carrier board and have a question about GPIO00 USB0_VBUS_EN on the Nvidia Carrier Board. On the Nvidia Carrier Board this pin is only tied to the FUSB301TMX USB Controller, which interfaces with the CC Pins on the USB Type-C Connector.

eh

USB0 is configured as an OTG port in the Jetson Orin Nano carrier device tree, but how is the Orin determining when a Device or Host is connected to the USB Type-C Port? Is the FUSB301TMX programmed via. I2C to change the state of USB0_VBUS_EN (INT_N) based on whether a Device or Host is connected as determined by the CC pins?

If that is how this works, can you provide the polarity of USB_VBUS_EN and how that configures the OTG port? I.e. Does USB_VBUS_EN High correspond to USB0 being configured as a Device and USB_VBUS_EN Low correspond to USB0 being configured as a Host (when using the sample rootfs device tree for the Nvidia Carrier board).

Is the FUSB301TMX programmed via. I2C to change the state of USB0_VBUS_EN (INT_N) based on whether a Device or Host is connected as determined by the CC pins?

Correct. This depends on the fusb301 to decide.

What kind of usb port design does your carrier board want to use here? If your design change, then you need to configure the device tree to match your board, but not “using the sample rootfs device tree for the Nvidia Carrier board).”

There is also document here teaching you how to do.
https://docs.nvidia.com/jetson/archives/r35.6.0/DeveloperGuide/HR/JetsonModuleAdaptationAndBringUp/JetsonAgxOrinSeries.html?highlight=universal#porting-the-universal-serial-bus

Thank you for the Link to the Developer Guide. Currently our design uses USB0 as a Host USB-A port, which after changing the device tree works as expected.

I would like to clarify the Host vs. Port switch in the P3768-A04 carrier board design. Does the P3768-A04 carrier design use a specificucsi_ccg driver to read a register from the FUSB301TMX over I2C to change the port role from host driver (xHCI) to device driver (xUDC)?

Also, the USB_VBUS_EN pin (GPIO00) is used only as an interrupt, which again is counter intuitive to the examples given in the developer guide.

The developer guide for the P3737-A04 guide you linked says “OTG port switching between the host driver (xHCI) and device driver (xUDC) roles are controlled by the Cypress Type-C controller” but this isn’t technically correct, as the Cypress controller has no ability to change the Port Direction, it can only signal to the Jetson that kind of peripheral (Device or Host) has been connected to the USB-C Port. I would like to better understand how this I2C interaction occurs with the Jetson Orin Nano.

ucsi_ccg is for Cypress PD controller on the Orin AGX devkit carrier board.

FUSB301 is on Orin Nano devkit carrier board.

Actually I think you could directly contact the type C controller vendor for the question you want to ask… We are not the proper role here to tell how their chip reports the situation…
Their datasheet may tell more.