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 Jetson/TX2 USB - eLinux.org 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.
- In method 1, does the “lsusb -t” result which I show indicate microUSB 3.0 function is ok?
- 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?