USB3.0 and PCIe work together?

Hello,

I’ll attach picture for the configuration, my hardware configuration uses 4 marked in yellow We’ll use 2 USB3.0 and 2 x1 PCIe. I never get two of them working together. If use “nvidia,lane-map = <0x11>;” then I get USB3.0 working but PCIe does not work. If I use
“nvidia,lane-map = <0x14>;” then I get PCIe working but USB3.0 does not work. Do they work together?

Following is the device tree parameters

xusb@70090000 {
compatible = “nvidia,tegra210-xhci”;
nvidia,portmap = <0xe07>;
nvidia,common_padctl = <0x54>;
………………….
xusb_pad_ctl: xusb_padctl {
compatible = “nvidia,tegra210-padctl”;
status = “okay”;
avdd_pll_uerefe-supply = <0x55>;
hvdd_pex_pll_e-supply = <0x56>;
dvdd_pex_pll-supply = <0x57>;
hvddio_pex-supply = <0x56>;
dvddio_pex-supply = <0x57>;
hvdd_sata-supply = <0x56>;
dvdd_sata_pll-supply = <0x58>;
hvddio_sata-supply = <0x56>;
dvddio_sata-supply = <0x58>;
nvidia,ss_portmap = <0x321>;
nvidia,lane_owner = <0xf356>;
nvidia,lane-map = <0x11>;
nvidia,enable-sata-port;
linux,phandle = <0x54>;
phandle = <0x54>;
};

pcie-controller {
……
nvidia,lane-map = <0x11>;
……….
pci@1,0 {
device_type = “pci”;
assigned-addresses = <0x82000800 0x0 0x1000000 0x0 0x1000>;
reg = <0x800 0x0 0x0 0x0 0x0>;
status = “okay”;
#address-cells = <0x3>;
#size-cells = <0x2>;
ranges;
nvidia,num-lanes = <0x1>;
};

pci@2,0 {
device_type = “pci”;
assigned-addresses = <0x82001000 0x0 0x1001000 0x0 0x1000>;
reg = <0x1000 0x0 0x0 0x0 0x0>;
status = “okay”;
#address-cells = <0x3>;
#size-cells = <0x2>;
ranges;
nvidia,num-lanes = <0x1>;
};
usb3-pcie-config.png

Please refer to https://devtalk.nvidia.com/default/topic/932956/jetson-tx1/pinmux-config-for-second-usb3-usb_ss2-/post/4873020/#4873020.

In short, you’d modify the following entries in your device tree:

nvidia,lane_owner = <0xf356>;
nvidia,portmap = <0xe07>;
nvidia,ss_portmap = <0x321>;
nvidia,lane-map = <0x12>;   (2 instances)

More information about this could be found in the TX1 Platform Adaptation and Bring-Up Guide document.

This worked, thanks a lot.
I’d like to know the ‘nvidia,lane-map’ nibble mapping with respect to the configuration. This will help me in the device tree for a different configuration.

I think your understanding about the ‘nvidia,lane-map’ nibble is correct. However, l4t kernel code just does not handle 0x11 configuration at all. (0x14 and 0x12 are defined and handled properly.)

Please refer to kernel/arch/arm/mach-tegra/include/mach/tegra_usb_pad_ctrl.h (line 33-38).

http://nv-tegra.nvidia.com/gitweb/?p=linux-3.10.git;a=blob;f=arch/arm/mach-tegra/include/mach/tegra_usb_pad_ctrl.h;h=193efacccd6687330f9230c65a2267aa1bacd6f3;hb=4206e3f9c9b3a1757c36bb798ca751c09e2db8c5

Thanks for the confirmation, great help!

Hakim