TX2 config#3 for USB LANE MAPPING

Hello,

Does anyone know how to modify the default config #2 to config #3 for USB LANE MAPPING?
I had read the document in the “Platform Adaptation and Bring-Up Guide”, but it is not very clear.
Can anyone provide the dts file for config #3?
Thank you very much.

Hi IsaHuang,
Please refer to
https://devtalk.nvidia.com/default/topic/1002494/
https://devtalk.nvidia.com/default/topic/1001443/jetson-tx2/extlinux-conf-fdt-no-longer-used-for-dtb-file-specification-/post/5130849/#5130849

Hello DaneLLL,

I had try the dts files in the link but it does not work for our carrier board.
Would you provide the diff dts files of the config #3 for us?
Thanks a lot.

Hi IsaHuang,
You also have to modify ODMDATA in p2771-0000.conf.common
https://devtalk.nvidia.com/default/topic/1002494/jetson-tx2/usb-lane-mapping/post/5127538/#5127538

And cfg files:
https://devtalk.nvidia.com/default/topic/1007448/jetson-tx2/differences-between-tx2-module-revisions/post/5144986/#5144986

Hello Dane,

Thanks for the information.
I can see two PCIe device now.
But it seems the config is #1.
I had two USB 3.0 port, but it can only detect USB 2.0 now.
Would you help to tell me how to modify it?
Thanks.

Please check documentation -> PDF Documents -> Platform Adaptation and Bring-Up Guide: Tegra Linux Driver Package for Jetson TX2 -> USB LANE MAPPING

Hi,

I modify ODMDATA to be 0x6090000.
PCIe#2_0 is working but…
my USB2_D is gone… ???

May I have your advise ?

Thank

Tonie

Hi Tonie, which port in config#3 does not work? USB_SS#1 or USB_SS#2? Do you modify device tree accordingly?

Hi, DaneLLL,

The USB port I used is pin USB2_P/D.
It is USB 2.0.

Regards,

Tonie

Hi Tonie,
Do you use your own carrier board in config#3? There are two USB ports enabled in config #3 and please check which one does not work.

Default carrier board is config #2.

Hi,DaneLLL,

Yes, I use carrier board.
And I had tried config#1, #3 and #5.

Only #3 can make PCIe works but USB 2.0 will be gone.
In the other words, USB 2.0 port will be failed once PCIe works.

Regards,

Tonie

Hi Tonie, which config is your carrier board?

For config #3, you have to set

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

Here is a post about config #5
https://devtalk.nvidia.com/default/topic/1021886/jetson-tx2/pcie-usb-lane-mapping/post/5203705/#5203705

Hi,DaneLLL,

I did try to have these and it still doesn’t work.

On my carrier board, here are the used pins :

USB 1 : uses USB_SS1 (G42, G43, D42 and D43 on TX2 module)
USB 2 : uses USB_SS0 (F43, F44, C43 and C44 on TX2 module)
USB 3 : uses USB2_D(B42, B43 of CVM)

PCIE : use PEX1 (H41, H42, E41 and E42)

Here are testing results :

0x609000
PCIE (Use PEX1) : OK
USB port 1 (Uses USB_SS1 ) : Ok within USB 2.0. USB 3.0 failed.
USB port 2 (Uses USB_SS0) : Ok within USB 2.0. USB 3.0 failed.
USB port 3 (Uses USB2_D/P, B42, B43 of CVM) : failed on USB 2.0.

0x109000
PCIE (Use PEX1) : Failed
USB port 1 (Uses USB_SS1 ) : Ok within USB 2.0. USB 3.0 failed.
USB port 2 (Uses USB_SS0) : Ok within USB 2.0. USB 3.0 failed.
USB port 3 (Uses USB2_D/P, B42, B43 of CVM) : USB 2.0 OK.

0x9000
PCIE (Use PEX1) : OK
USB port 1 (Uses USB_SS1 ) : Ok within USB 2.0. USB 3.0 failed.
USB port 2 (Uses USB_SS0) : Ok within USB 2.0. USB 3.0 failed.
USB port 3 (Uses USB2_D/P, B42, B43 of CVM) : USB 2.0 failed.

0x7009000
PCIE (Use PEX1) : Failed
USB port 1 (Uses USB_SS1 ) : Ok within USB 2.0. USB 3.0 failed.
USB port 2 (Uses USB_SS0) : Ok within USB 2.0. USB 3.0 failed.
USB port 3 (Uses USB2_D/P, B42, B43 of CVM) : USB 2.0 OK.

And USB 3.0 doesn’t work for all USB ports.

Please help.

For config #3 it should be 0x609000. Do you also modify device tree according to [USB LANE MAPPING] section? Please share the device tree for reference.

And also please check devmem2
https://devtalk.nvidia.com/default/topic/1002494/jetson-tx2/usb-lane-mapping/post/5125933/#5125933

Hi, DaneLLL,

I copied tegra186-quill-p3310-1000-a00-00-base.dts to my.dts.
And I kept all but modify ‘pcie-controller@10003000’ only.

And regarding to the testing result I provide above, I make a mistake in testing USB 3.0.
USB 3.0 is working… Let me correct my testing result :

0x609000
PCIE (Use PEX1) : OK
USB port 1 (Uses USB_SS1 ) : Ok within USB 2.0. and USB 3.0.
USB port 2 (Uses USB_SS0) : Ok within USB 2.0. USB 3.0 failed.
USB port 3 (Uses USB2_D/P, B42, B43 of CVM) : failed on USB 2.0.

0x109000
PCIE (Use PEX1) : Failed
USB port 1 (Uses USB_SS1 ) : Ok within USB 2.0. and USB 3.0.
USB port 2 (Uses USB_SS0) : Ok within USB 2.0. and USB 3.0.
USB port 3 (Uses USB2_D/P, B42, B43 of CVM) : USB 2.0 OK.

Hi Tonie, the default dts is for config #2. you need to change it per [USB LANE MAPPING]

Hi, DaneLLL,

I set dts to config #3.
And also modified

xhci@3530000 {
phys = <&gegra_xusb_padctl TEGRA_PADCTL_PHY_UMTI_P(2)>,
<&gegra_xusb_padctl TEGRA_PADCTL_PHY_UMTI_P(0)>,
<&gegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(2)>,
<&gegra_xusb_padctl TEGRA_PADCTL_PHY_UMTI_P(1)>;
phy-names = “utmi-2”, “umti-0”, “usb3-2”, “umti-1”;

};

pinctrl@3520000 {

tegra_xusb_padctrl_pinmux {
usb2-2 {
nvidia,lanes = “otg-2”;
nvidia,function= “xusb”;
nvidia,port-cap= “TEGRA_PADCTL_PORT_OTG_CAP”;
nvidia,oc-pin= <1>;
};
usb2-0 {
nvidia,lanes = “otg-0”;
nvidia,function= “xusb”;
nvidia,port-cap= “TEGRA_PADCTL_PORT_OTG_CAP”;
nvidia,oc-pin= <0>;
};
usb3-2 {
nvidia,lanes = “usb3-2”;
nvidia,port-cap= “TEGRA_PADCTL_PORT_HOST_ONLY”;
nvidia,oc-pin= <1>;
};
usb2-1 {
nvidia,lanes = “otg-1”;
nvidia,port-cap= “TEGRA_PADCTL_PORT_HOST_ONLY”;
nvidia,oc-pin= <1>;
};
};
};

And ODMDATA = 0x6090000

My carrier shows :

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

Nothing be bind…

Sorry, correct my wrong typing.
I use Config#3

Hi Tonie,

Please check your pin selection with Table 15 of OEM DG.

For config#3:
USB_SS#1 is set to pins of PEX_RFU which are G39, G40, D39 and D40.
USB_SS#2 is set to pins of USB_SS1 which are G42, G43, D42 and D43.

Hi, Trumany,

These are the pin definitions on my carrier board :

usb2-2 : USB2_D (B42, B43)
usb2-0 : USB0_D (B39, B40)
usb3-2 : USB_SS1 (G42, G43, D42, D43)
usb2-1 : USB1_D (A38, A39)

pcie : PEX1 (H41,H42, E41 and E42)

We also add USB_SS0 into usb2-1, but I ignore it because I had enabled pins of PEX1.
According to the table 15, USB_SS0 and PEX1 are exclusive.

And I think config#3 is closer to my carrier board, so I use it.

Till now, I still cannot make usb2-2 works…
So I read document and it tells I have to modify xhci@3530000 and pinctrl@3520000.
I tried but my settings make thing worse…
All USB port are gone…