USB TYPE C - DEVICE/HOST MODE

Hi NV SUPPORT TEAM
Follow up Thor design guide and P4071 Schematic, The USB RCM circuit used TYPEC with Cypress PD controller (I2C) take host/device mode switch.
In our custome board we only used CC controller for Type C connector.
My question:

  1. Do we must used PD Controller for OTG (HOST/DEVICE) for RCM Type C circuit?
  2. If we dont used PD controller and only used CC controller, Do we must used ID / VBUS Detect signal to THOR/ORIN for port switch ?

Thanks
Yutai

REFERENCE DOCUMENT:
Jetson Thor Adaptation and Bring-Up — NVIDIA Jetson Linux Developer Guide

A USB connector class represents a physical USB connector. When it is attached to the MUX and USB interface controllers, it should be a child of a USB interface controller or a separate node. Generally, port switching between the roles of an OTG port is controlled by the host driver (xHCI) and device driver (xUDC). You can determine the role by the states of the ID pin and the VBUS_DETECT pin.

It is not a hard requirement to use the PD controller from the Jetson Thor Dev Kit carrier board (reference design). But NVIDIA does not have a reference design for any other implementation so you would have to ensure the USB-C port still follows the USB spec.

ID and VBUS detect are part of the USB Type C spec so not including them would violate spec.

@ChrisB_NV

Becasue only micro USB connector only have ID pin.
Type C USB connector dont have ID pin, So we still need create our circuit ,
Use one GPIO IN as ID function and GPIO IN as VBUS_DETECT to implement OTG function.
Is it correct?

One more qurey :
IF the RCM(flash) Type C USB connector pin we setting the USB roles as “HOST ONLY”.
Because recovery mode the ORIN/THOR working in device mode.
So from your suggestion if we must setting RCM(flash) USB ports to “OTG”

Thanks
Yutai

You could make a micro USB port as flash port . No need to be a type C port.

But your design for OTG is wrong.
If you want a device mode only design, then you could abort the ID pin. But now you abort the vbus_DET, so even device mode won’t switch correctly.

Flash process is like this

  1. Recovery mode. → this one is hardware to trigger. Actually we don’t care how your design looks like in this stage.
  2. Initrd flash → this one starts to have Linux kernel joined. We need OTG to support here.

Thus, the must have OTG is because of (2) but not (1).

@WayneWWW
Get it , Thanks.

When we setting OTG in DTS from SW side,
HW must have ID and VBUS_DETECT to ORIN/THOR follow up below truth table to meet OTG requirement.
But we can select other gpio, the below GPIO_Q0 and M3 only for reference,
Is it correct ?

Thanks
Yutai

Yes, you could use other GPIO. But specify it in the device tree.

@WayneWWW
Thanks you.

Other soultion is that we can use I2C (FUSB301TMX) to get OTG info same as your reference design :Jetson Orin NX Carrier Board - P3768.

Summaries for our communction.

  1. OTG GPIO soultion : Used ID and VBUS_DETECT. e.g Micro USB connector case.
  2. OTG I2C soultion: Used CC controller or PD controller I2C message. . e.g Type C connector case.
    Please check if my understanding in correct ? Thanks

One more qurey:
If my custom board only have USB TYPE A connector, as you know TYPE A dont have ID pin
and also dont hace CC pin.
Any soution to used OTG for USB TYPE A connector from your suggestion. Thanks.

Thanks
Yutai

No, we don’t suggest this design.

@WayneWWW
Thanks,
That meas we can not ued USB TYPE A connector for OTG setting in DTS.

Thanks
Yutai

Yes, type A does not support OTG mode due to hardware limitation.

我這邊用中文詢問好了… 請問你到底問題是什麼.

聽不是很懂現在到底要詢問什麼. 感覺你並沒有理解我前面解釋的東西

我的问题是TYPE A 不支持OTG,
那么如果产品只有TYPE A 是不是只能做烧录口,不能做HOST了。
我的想法是是否可以配置HOST ONLY 模式,因为RCM下面THOR/ORIN自动DEVICE设备。
这样烧录完TYPE A就是HOST 了

不是. 你做typeA的話是連燒都不能燒錄.

你在initrd flash那一段就會直接停掉.

明白了,感谢您详细解释

還有這邊要說明一下, type A不能做OTG是USB標準的共識. 不是說只有NVIDIA不支援…

OTG本來就是仰賴ID/VBUS_DET 來判斷目前要當host還是device. type A天生就沒接他們, 少了這些資訊本來就無法判斷host/device角色, 自然不能做OTG功能.

@WayneWWW
非常感谢您的详细说明~

我担心的问题是假如客户使用ORIN/THOR的产品只有USB TYPE A连接器,只能做烧录真的是太遗憾了~
因为之前我的理解是ORIN烧录过程是可以在RCM下烧录整个NOR/EMMC的,是可以正常烧录和使用的。

现在改进后的烧录方法,必须要OTG支持,但是TYPE A又不支持OTG, 导致产品无法使用
(或者必须把一个产品TYPE A只能做为烧录口,不能做HOST接其他外设)
这样会限制一部分现存产品的升级/使用,我有点不是很理解NV这样改烧录方法的意思?

请帮忙确认下NV可以继续支持在RCM下面升级整个系统呢?

Thanks
Yutai

Hi,

我有点不是很理解NV这样改烧录方法的意思?

flash.sh無法燒錄NVMe/USB SSD等external drive. 所以才改成使用initrd flash的模式.

基本上還是建議參考devkit的設計將你的flash port做成至少能支援OTG的功能.

你们的烧录软件在JP6.2是可以把USB虚拟成网口来烧录外部NVME的,
在JP7.1才改成了必须使用OTG功能。
请帮忙确认下是否可以在JP7.1后之后的版本继续支持USB虚拟网口的形式来烧录。
这样才能延续支持市场上已存的一部分只有TYPE A连接器的产品。
不然因为升级方式的改变导致之前的产品无法使用,真的太遗憾了~

你们的烧录软件在JP6.2是可以把USB虚拟成网口来烧录外部NVME的,
在JP7.1才改成了必须使用OTG功能。

你好像還是搞錯了. 你這裡講的事情是同一件事情. 而且JP6.2/JP7.1沒有差別.

“USB虚拟成网口” 這件事情依然是USB OTG切成device mode之後才生成的

多谢,有可能我自己的理解问题。
但是如何支持市面已存只有TYPE A 的产品后续升级方法,后续请帮忙给个好的方案。
非常感谢您的大力支持~