How to enable USB3 interface as a Host

Hi,

We have a custom carrier board for the Xvavier AGX module that doesn’t have a USBC PD and only has the USB3 traces pinned out to a USB 3.0 Type A connector. There is no ESATA connections in our custom carrier board.

How can we enable this USB3 as a USB3.1 host?

lsusb returns nothing.

Hi,
You would need to modify device tree per hardware design. Please read Porting USB in adaptation guide:
https://developer.nvidia.com/embedded/dlc/Tegra_Linux_Driver_Package_AGX_Xavier_Adaptation_Guide

Hi DaneLLL,

Thank you for replying. I’ve been trying to modify the device tree similar to what we found in the following post.

Our modifications are as follows.

1. under ucsi_ccg 
        ucsi_ccg: ucsi_ccg@8 {
-            status = "okay";
+           status = "disabled";

2. under xusb_padctl@3520000, made sure mode is set to "host" and usb3 ports need its companion usb2 port.
    xusb_padctl: xusb_padctl@3520000 {
......
        ports {
            usb2-3 {
               mode = "host";
               status = "okay";
            };
            usb3-3 {
		status = "okay";
		nvidia,usb2-companion = <0x03>; 
                usb3-gen1-only = <0x01>
	    };
        };

3. Removed all "extcon*" property under xhci@3610000 and xudc@3550000.

We could compile the dts file to a dtb file. However, I am not sure how to use dd or flash.sh so that our modified dtb is applied.

Hi,
Please put the built dtb to

Linux_for_Tegra/kernel/dtb

and do clean re-flash.

Hi DaneLLL,

I think I got the USB working. Here are the steps:

  1. Decompile the original dtb file under the module’s /boot/dtb into a dts file.
  2. Make the necessary changes: only disable ucsi_ccg@8 and changing the USB 2 mode to host.
  3. Recompile the edited dts file into another dtb file.
  4. Replace the tegra194-p2888-0001-p2822-0000.dtb file under Linux_for_Tegra/kernel/dtb.
  5. Use the ./flash.sh tool to reflash the kernel dtb

Thank you for your help!

Glad to know issue resolved, thanks for your sharing!