TX2 config#4 for USB LANE MAPPING

Hi All:

Our carrier board has two USB3.0 type A port and a USB 3.0 Micro-B port. The shematic connect pin as follows.

I follow the https://elinux.org/Jetson/TX2_USB instructions and modify ODMDATA to 0x7090000 to use config#4 USB lane mapping. I try to modify kernel-dts/tegra186-quill-p3310-1000-c03-00-base.dts file to enable USB3.0 for three of them, and get the following result.

[USB3 typeA]
USB1_D (A38, A39)
USB_SS (G39, G40, D39, D40)

[USB3 typeA]
USB2_D (B42, B43)
USB_SS (G39, G40, D39, D40)

[USB3 MicroUSB3.0]
USB0_D (B39, B40)
USB_SS (F43, F44, C43, C44)

Method 1:

pcie-controller@10003000 {
                pci@1,0 {
                        nvidia,num-lanes = <1>;
                        nvidia,disable-clock-request;
                        status = "okay";
                };
                pci@2,0 {
                        nvidia,num-lanes = <1>;
                        status = "okay";
                };
                pci@3,0 {
                        nvidia,num-lanes = <1>;
                        status = "disabled";
                };
        };

        xhci@3530000 {
                phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>,
                        <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(1)>,
                        <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(2)>,
                        <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(1)>,
                        <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(2)>,
[b]                        <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(0)>;
                phy-names = "utmi-0", "utmi-1", "utmi-2", "usb3-1", "usb3-2", "usb3-0";[/b]
        };

        xhci@355000 {
                phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(1)>,
                        <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(0)>;
                phy-names = "usb2", "usb3";
        };

pinctrl@3520000 {
                pinmux {
                        usb3-std-A-port2 {
                                nvidia,lanes = "usb3-1";
                                nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
                                status = "okay";
                        };
                        usb3-std-A-port3 {
                                nvidia,lanes = "usb3-2";
                                nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
                                status = "okay";
                        };
                        usb3-std-AB-port0 {
                                nvidia,lanes = "usb3-0";
                                nvidia,port-cap = <TEGRA_PADCTL_PORT_OTG_CAP>;
                                status = "okay";
                        };
                        e3325-usb3-std-A-HS {
                                status = "okay";
                        };
                };

        };

I connect USB3.0 micro-B to PC, PC can’t recognize anything, then I connect a portable disk or a mouse to one of the two typeA USB, the micro-B can be recognized as USB3.0 device on my PC. If I plug out the typeA USB, the device disappeared from my PC(micro-B is still connect to PC). When the PC recognize the USB3.0 device, use “lsusb -t” it show following result. It seems USB type A port affect Micro-B behavior.

adam@adam-Latitude:~/JetPack-L4T-3.0/64_TX2/Linux_for_Tegra$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
    |__ Port 3: Dev 14, If 0, Class=Communications, Driver=rndis_host, 5000M
    |__ Port 3: Dev 14, If 1, Class=CDC Data, Driver=rndis_host, 5000M
    |__ Port 3: Dev 14, If 2, Class=Communications, Driver=cdc_acm, 5000M
    |__ Port 3: Dev 14, If 3, Class=CDC Data, Driver=cdc_acm, 5000M
    |__ Port 3: Dev 14, If 4, Class=Mass Storage, Driver=usb-storage, 5000M
    |__ Port 3: Dev 14, If 5, Class=Communications, Driver=cdc_ether, 5000M
    |__ Port 3: Dev 14, If 6, Class=CDC Data, Driver=cdc_ether, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
    |__ Port 5: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 5: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 7: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 7: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M

But If I modify kernel-dts/tegra186-quill-p3310-1000-c03-00-base.dts file as follows:
Method 2:

pcie-controller@10003000 {
                pci@1,0 {
                        nvidia,num-lanes = <1>;
                        nvidia,disable-clock-request;
                        status = "okay";
                };
                pci@2,0 {
                        nvidia,num-lanes = <1>;
                        status = "okay";
                };
                pci@3,0 {
                        nvidia,num-lanes = <1>;
                        status = "disabled";
                };
        };

        xhci@3530000 {
                phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>,
                        <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(1)>,
                        <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(2)>,
                        <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(1)>,
                        <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(2)>;
                <b>phy-names = "utmi-0", "utmi-1", "utmi-2", "usb3-1", "usb3-2";</b>
        };

        xhci@355000 {
                phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(1)>,
                        <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(0)>;
                phy-names = "usb2", "usb3";
        };

pinctrl@3520000 {
                pinmux {
                        usb3-std-A-port2 {
                                nvidia,lanes = "usb3-1";
                                nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
                                status = "okay";
                        };
                        usb3-std-A-port3 {
                                nvidia,lanes = "usb3-2";
                                nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
                                status = "okay";
                        };
                        usb3-std-AB-port0 {
                                nvidia,lanes = "usb3-0";
                                nvidia,port-cap = <TEGRA_PADCTL_PORT_OTG_CAP>;
                                status = "okay";
                        };
                        e3325-usb3-std-A-HS {
                                status = "okay";
                        };
                };

        };

MicroUSB can be recognized as USB2.0 device on my PC, even if USB type A didn’t connect portable disk or mouse.

  1. In method 1, does the “lsusb -t” result which I show indicate microUSB 3.0 function is ok?
  2. I want 3.0 Micro-B can be recognized as USB3.0 device on my PC even if USB type A didn’t connect portable disk or mouse, how to modify the dts file?

Please apply

usb_cd {
    status = "okay";
    phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>;
    phy-names = "otg-phy";
};

xotg {
    status = "okay";
    phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>;
    phy-names = "otg-usb2";
};
 
xudc@3550000 {
    status = "okay";
    phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>,
        <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(0)>;
    phy-names = "usb2", "usb3";
    emc-frequency = <150000000>;
};
pcie-controller@10003000 {
    pci@1,0 {
            nvidia,num-lanes = <1>;
            nvidia,disable-clock-request;
            status = "okay";
    };
    pci@2,0 {
            nvidia,num-lanes = <1>;
            status = "okay";
    };
    pci@3,0 {
            nvidia,num-lanes = <1>;
            status = "disabled";
    };
};
xhci@3530000 {
    phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>,
            <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(0)>;
    phy-names = "utmi-0", "usb3-0";
};
pinctrl@3520000 {
    pinmux {
        usb2-micro {
            nvidia,lanes = "otg-0";
            nvidia,function = "xusb";
            nvidia,port-cap = <TEGRA_PADCTL_PORT_OTG_CAP>;
        };
        usb3-micro {
            nvidia,lanes = "usb3-0";
            nvidia,function = "xusb";
            nvidia,port-cap = <TEGRA_PADCTL_PORT_OTG_CAP>;
        };
    };
};

and check functionality of
[USB3 MicroUSB3.0]
USB0_D (B39, B40)
USB_SS (F43, F44, C43, C44)

Hi DaneLLL:

After apply your code, USB3.0 Micro-B can be recognize as USB3.0 device on my PC, please refer following code. But the two typeA port can’t work, usb 2.0 is fail too.

adam@adam-Latitude:~/JetPack-L4T-3.0/64_TX2/Linux_for_Tegra$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
    |__ Port 1: Dev 5, If 2, Class=Communications, Driver=cdc_acm, 5000M
    |__ Port 1: Dev 5, If 0, Class=Communications, Driver=rndis_host, 5000M
    |__ Port 1: Dev 5, If 5, Class=Communications, Driver=cdc_ether, 5000M
    |__ Port 1: Dev 5, If 3, Class=CDC Data, Driver=cdc_acm, 5000M
    |__ Port 1: Dev 5, If 1, Class=CDC Data, Driver=rndis_host, 5000M
    |__ Port 1: Dev 5, If 6, Class=CDC Data, Driver=cdc_ether, 5000M
    |__ Port 1: Dev 5, If 4, Class=Mass Storage, Driver=usb-storage, 5000M
    |__ Port 3: Dev 2, If 0, Class=Mass Storage, Driver=uas, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
    |__ Port 5: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 5: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 7: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 7: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M

Hi guohoujin2006,
With the device tree, does [USB3 MicroUSB3.0] work in host mode?

Hi DaneLLL:

With the device tree, [USB3 MicroUSB3.0] can be recognize as USB3.0 device on my PC, while in host mode, it can recognize USB2.0 mouse, I didn’t have MicroUSB3.0 OTG wire to test host mode 3.0 function. Does this device tree enable [USB3 MicroUSB3.0] host mode 3.0 function?

Yes.

Your two USB3 typeA use same USB3 pins. Why?
[USB3 typeA]
USB1_D (A38, A39)
USB_SS (G39, G40, D39, D40)
[USB3 typeA]
USB2_D (B42, B43)
USB_SS (G39, G40, D39, D40)

Hi DeneLLL:

Sorry, I write the wrong pins for one of the typeA port. I correct it as:

[USB3 typeA]
USB1_D (A38, A39)
USB_SS (G39, G40, D39, D40)

[USB3 typeA]
USB2_D (B42, B43)
USB_SS (G42, G43, D42, D43)

[USB3 MicroUSB3.0]
USB0_D (B39, B40)
USB_SS (F43, F44, C43, C44)

Please try

usb_cd {
    status = "okay";
    phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>;
    phy-names = "otg-phy";
};

xotg {
    status = "okay";
    phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>;
    phy-names = "otg-usb2";
};
 
xudc@3550000 {
    status = "okay";
    phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>,
        <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(0)>;
    phy-names = "usb2", "usb3";
    emc-frequency = <150000000>;
};
pcie-controller@10003000 {
    pci@1,0 {
            nvidia,num-lanes = <1>;
            nvidia,disable-clock-request;
            status = "okay";
    };
    pci@2,0 {
            nvidia,num-lanes = <1>;
            status = "okay";
    };
    pci@3,0 {
            nvidia,num-lanes = <1>;
            status = "disabled";
    };
};
xhci@3530000 {
    phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>,
            <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(1)>,
            <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(2)>,
            <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(0)>,
            <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(1)>
            <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(2)>;
    phy-names = "utmi-0", "utmi-1","utmi-2", "usb3-0", "usb3-1", "usb3-2";
};
pinctrl@3520000 {
    pinmux {
        usb2-micro {
            nvidia,lanes = "otg-0";
            nvidia,function = "xusb";
            nvidia,port-cap = <TEGRA_PADCTL_PORT_OTG_CAP>;
        };
        usb3-micro {
            nvidia,lanes = "usb3-0";
            nvidia,function = "xusb";
            nvidia,port-cap = <TEGRA_PADCTL_PORT_OTG_CAP>;
        };
        usb2-1 {
            nvidia,lanes = "otg-1";
            nvidia,function = "xusb";
            nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
        };
        usb2-2 {
            nvidia,lanes = "otg-2";
            nvidia,function = "xusb";
            nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
        };
        usb3-1 {
            nvidia,lanes = "usb3-1";
            nvidia,function = "xusb";
            nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
        };
        usb3-2 {
            nvidia,lanes = "usb3-2";
            nvidia,function = "xusb";
            nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
        };
    };
};

Hi DaneLLL:

The two typeA USB3.0 is okay, the USB3.0 MicroB port device 3.0 function is ok, and MicroB otg host 2.0 is ok.If the USB3.0 Micro-B otg wire I bought is arrived, I will test USB3.0 MicroB host 3.0 function. Thanks a lot.

Hi DaneLLL:

After I got USB3.0 Micro-B otg wire, USB3.0 MicroB host 3.0 function is fail! I bought the attached USB3.0 MicroB otg wire.

The two typeA USB3.0 is okay, the USB3.0 MicroB port device 3.0 function is ok, and MicroB otg host 2.0
USB30_MicroB_otg.png

Hi guohoujin2006,
Please add the following to xotg and try again:
https://devtalk.nvidia.com/default/topic/1029899/jetson-tx2/tx2-usb-3-0-otg-as-host-error-message/post/5244417/#5244417

Hi DaneLLL:

After add this modification, MicroB otg host 2.0 is ok, but 3.0 is fail. After I plug in MicroB otg wire connect with a 3.0 salve device, the console always output following log and can’t recognized the device.

nvidia@tegra-ubuntu:~$
nvidia@tegra-ubuntu:~$
nvidia@tegra-ubuntu:~$
nvidia@tegra-ubuntu:~$
nvidia@tegra-ubuntu:~$ [  408.188138] xhci-tegra 3530000.xhci: entering ELPG
[  408.209813] xhci-tegra 3530000.xhci: entering ELPG done
[  408.215616] xhci-tegra 3530000.xhci: exiting ELPG
[  408.247862] xhci-tegra 3530000.xhci: Firmware timestamp: 2017-03-31 06:21:56 UTC, Version: 55.07 release
[  408.262044] xhci-tegra 3530000.xhci: exiting ELPG done
[  409.821838] extcon-gpio-states external-connection:extcon@1: Cable state 2
[  410.755750] xhci-tegra 3530000.xhci: tegra_xhci_mbox_work mailbox command 5
[  410.762773] xhci-tegra 3530000.xhci: tegra_xhci_mbox_work ignore firmware MBOX_CMD_DEC_SSPI_CLOCK request
[  410.795706] xhci-tegra 3530000.xhci: entering ELPG
[  410.817404] extcon-gpio-states external-connection:extcon@1: Cable state 2
[  410.832124] xhci-tegra 3530000.xhci: entering ELPG done
[  411.219903] xhci-tegra 3530000.xhci: exiting ELPG
[  411.248313] xhci-tegra 3530000.xhci: Firmware timestamp: 2017-03-31 06:21:56 UTC, Version: 55.07 release
[  411.263220] xhci-tegra 3530000.xhci: exiting ELPG done
[  413.827725] xhci-tegra 3530000.xhci: entering ELPG
[  413.841443] xhci-tegra 3530000.xhci: entering ELPG done
[  413.847478] xhci-tegra 3530000.xhci: exiting ELPG
[  413.876132] xhci-tegra 3530000.xhci: Firmware timestamp: 2017-03-31 06:21:56 UTC, Version: 55.07 release
[  413.891066] xhci-tegra 3530000.xhci: exiting ELPG done
[  415.895725] xhci-tegra 3530000.xhci: entering ELPG
[  415.910300] xhci-tegra 3530000.xhci: entering ELPG done
[  415.915992] xhci-tegra 3530000.xhci: exiting ELPG
[  415.947952] xhci-tegra 3530000.xhci: Firmware timestamp: 2017-03-31 06:21:56 UTC, Version: 55.07 release
[  415.962350] xhci-tegra 3530000.xhci: exiting ELPG done
[  418.011896] xhci-tegra 3530000.xhci: entering ELPG
[  418.022582] xhci-tegra 3530000.xhci: entering ELPG done
[  418.029751] xhci-tegra 3530000.xhci: exiting ELPG
[  418.060173] xhci-tegra 3530000.xhci: Firmware timestamp: 2017-03-31 06:21:56 UTC, Version: 55.07 release
[  418.075004] xhci-tegra 3530000.xhci: exiting ELPG done
[  419.845695] extcon-gpio-states external-connection:extcon@1: Cable state 2
[  420.795788] xhci-tegra 3530000.xhci: entering ELPG
[  420.809814] xhci-tegra 3530000.xhci: entering ELPG done
[  420.837325] extcon-gpio-states external-connection:extcon@1: Cable state 2
[  421.249427] xhci-tegra 3530000.xhci: exiting ELPG
[  421.280187] xhci-tegra 3530000.xhci: Firmware timestamp: 2017-03-31 06:21:56 UTC, Version: 55.07 release
[  421.295064] xhci-tegra 3530000.xhci: exiting ELPG done
[  424.163989] xhci-tegra 3530000.xhci: entering ELPG
[  424.178079] xhci-tegra 3530000.xhci: entering ELPG done
[  424.184095] xhci-tegra 3530000.xhci: exiting ELPG
[  424.212174] xhci-tegra 3530000.xhci: Firmware timestamp: 2017-03-31 06:21:56 UTC, Version: 55.07 release
[  424.226969] xhci-tegra 3530000.xhci: exiting ELPG done
[  426.795630] xhci-tegra 3530000.xhci: entering ELPG
[  426.808354] xhci-tegra 3530000.xhci: entering ELPG done
[  427.030807] xhci-tegra 3530000.xhci: exiting ELPG
[  427.060180] xhci-tegra 3530000.xhci: Firmware timestamp: 2017-03-31 06:21:56 UTC, Version: 55.07 release
[  427.075018] xhci-tegra 3530000.xhci: exiting ELPG done

nvidia@tegra-ubuntu:~$
nvidia@tegra-ubuntu:~$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-tegra/3p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-tegra/4p, 480M
nvidia@tegra-ubuntu:~$

Anyway, two typeA USB3.0 and MicroB device 3.0 can work fine is enough, thanks a lot. MicroB otg 3.0 function is not so urgent.

Hi DaneLLL:

About MicroB otg 3.0 has any update? MicroB otg 3.0 still not ok.

Hi guohoujin2006,
It looks to be an issue in HW but uncertain.
Can you try https://devtalk.nvidia.com/default/topic/1029899/jetson-tx2/tx2-usb-3-0-otg-as-host-error-message/post/5242532/#5242532

Hi DaneLLL

Our schematic is not the same as the ticket you mentioned. please find the attached schematic.
USB_SS0_RX+ connect F43
USB_SS0_RX- connect F44
USB_SS0_TX+ connect C43
USB_SS0_TX- connect C44
while if I do RX and TX exchanged, USB_SS0_RX+/- connect to C43/C44, USB_SS0_TX+/- connect to F43/F44.
MicroB otg 3.0 is ok, but MicroB slave is fail. It seems MicroB otg 3.0 and slave 3.0 can’t both ok at the sametime.

Hi, what do you mean ‘exchanged’ TX/RX? Is that circuit connection swap? In the other words, you made wrong connection to the USB connector? If so, how do you do with the AC caps on TX lines?

Hi Trumany:

Yes, ‘exchange’ means do TX/RX circuit connection swap, maybe I do a wrong connection to the USB connector, but I want to find a way to resolve this problem.

If I do not swap TX/RX circuit connection, MicroB otg 3.0 is not OK, MicroB slave 3.0 is ok.
If I swap TX/RX circuit connection, MicroB otg 3.0 is OK, MicroB slave 3.0 is not ok.

MicroB otg3.0 and slave 3.0 can’t be both ok, I don’t know what’s the problem, please check the attached schematic. thanks!

USB_SS0_RX+ connect F43
USB_SS0_RX- connect F44
USB_SS0_TX+ connect C43
USB_SS0_TX- connect C44

It is weird… What’s your proof of slave OK when not swap and that of OTG OK when swap? And can you please paste the logs of “not swap” & “swap”?

Hi Trumany:

not swap log:

<b>on TX2:</b>
nvidia@tegra-ubuntu:~$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-tegra/3p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-tegra/4p, 480M
    |__ Port 1: Dev 6, If 0, Class=Mass Storage, Driver=usb-storage, 480M
nvidia@tegra-ubuntu:~$ 

<b>on PC:</b>
adam@adam-Latitude:~$ 
adam@adam-Latitude:~$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
    |__ Port 1: Dev 3, If 0, Class=Communications, Driver=rndis_host, 5000M
    |__ Port 1: Dev 3, If 1, Class=CDC Data, Driver=rndis_host, 5000M
    |__ Port 1: Dev 3, If 2, Class=Communications, Driver=cdc_acm, 5000M
    |__ Port 1: Dev 3, If 3, Class=CDC Data, Driver=cdc_acm, 5000M
    |__ Port 1: Dev 3, If 4, Class=Mass Storage, Driver=usb-storage, 5000M
    |__ Port 1: Dev 3, If 5, Class=Communications, Driver=cdc_ether, 5000M
    |__ Port 1: Dev 3, If 6, Class=CDC Data, Driver=cdc_ether, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
    |__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 5: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 5: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 7: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 7: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M
adam@adam-Latitude:~$

swap log:

<b>on TX2</b>
nvidia@tegra-ubuntu:~$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-tegra/3p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-tegra/4p, 480M

<b>on PC:</b>
adam@adam-Latitude:~$ 
adam@adam-Latitude:~$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
    |__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 5: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 5: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 7: Dev 4, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 7: Dev 4, If 1, Class=Wireless, Driver=btusb, 12M

Did you check the lines arrangement of OTG cable? Does it match your micro-B connector?