Problems enabling usb 3.0 on orin nx

Hello, I am working on a custom carrier and I have tried to integrate a usb port type A 3.0, since I only needed one port and to avoid complexity I decided not to include a hub so that the connection of the pairs is direct, I used as example the connection of developer guide on the orin nx that shows the sequematic of the P3509.

https://docs.nvidia.com/jetson/archives/r35.1/DeveloperGuide/text/HR/JetsonModuleAdaptationAndBringUp/JetsonXavierNxSeries.html#

So the connection on my board is as follows:

The problem is that the usb works but only as 2.0, the idea of copying the design was to avoid having to change the tree’s xusb_padctl, which comes as standard (USB2 port 1 and USB3 port 2).

The changes of my carrier with respect to the examples is the non-existence of a usb hub and the vbus-supply that is always on 5v mode, should I modify the device tree to reflect these changes?, I have tried to look for information but I can’t find much about designs without a usb hub, will this be a problem?

I’m sorry if I’m making some basic mistake and thank you very much for your help.

It has chance to hit such issue when using a always-on 5v vbus. Better using a gpio to control.

Hi, thanks for your quick response. So not having a hub should not be a problem in principle when configuring the pins in the divice tree? is there any way to check if the problem is the power supply? I can start the 5V regulator once the carrier is started or plug and unplug the usb device?
If that is the problem and I have not misunderstood I would have to configure one of the gpio outputs to be the 5v power supply of the usb 3.0?

Thanks for your help.

You need to disable fusb301 from the device tree as you are not using it.

I don’t know the rest of modification you did so cannot comment. What I said is just one kind of many reasons.

Sorry, could you tell me where or how I would have to disable fusb301. The only information I have found about fusb301 speaks of its existence.

“For an On-The-Go port
For an example OTG implementation, see For an On-The-Go port. The Orin Nano Developer Kit implementation is similar, but uses the fusb301 driver instead of the ucsi_ccg driver.”

en Jetson Orin NX and Nano Series — Jetson Linux Developer Guide documentation

But nothing about how to disable it.

Thank you very much.

I mean do you have the experience to modify device tree?

Just search fusb301 in your device tree and you will find this node. Also, you should also notice that even when you modified device tree.

I feel the point here is you totally not modify it before?

Yes, I have not modified the device tree, my intention was to copy the P3509 or the reComputer J401 schematic shown in the Developer Guide since they have a kernel with the modified device tree and thus not having to do it since I don’t have too much experience.

Hello WayneWWWW, as I told you yesterday, no, I have not modified the device tree and I am not familiar with it, I usually work more on the hardware side, if I understand correctly the device tree is the map that the kernel uses to know the hardware it has at its disposal, but I have several doubts.

1- You say that I can search directly in the divce tree for FUSB301, but when I search in the operating system it is in binarie, I have seen that they can be translated and saved in specific folders for its visualization?

2- Once downloaded and modified they have to be compiled? I have seen that in some post explains that they have to be compiled in others says that with the new versions of Ubuntu is not necessary similar to the config.txt of raspbian?

3- If I can not modify the divice tree, can I use the Jetson_Orin_NX_series_and_Orin_Nano_series_Pinmux_Config_Template to disable all pins related to the usb type c or even all pins that I do not use in my design? that would work?

4- Once the device tree is modified and compiled, you have to compile the complete kernel?

As you say I do not have much experience in this aspect but it is my intention to learn, do you know of any step by step guide that is up to date to perform these steps or at least some of them? I have found some post but they are usually from a couple of years ago and it seems to change a lot from one version to the next.

Once again thanks for everything.