Hi Sir/Madam,
I would like to config USB Lane Mapping to #3 so I follow other threads to modify ODMDATA to 0x06090000 in “p2771-0000.conf.common” and modify the following parts in “tegra186-quill-p3310-1000-a00-00-base.dts” and “tegra186-quill-p3310-1000-c03-00-base.dts”.
in “tegra186-quill-p3310-1000-c03-00-base.dts”
gpio@2200000 {
sdmmc-wake-support-input {
status = "okay";
};
sdmmc-wake-support-output {
status = "okay";
};
pcie0_lane2_mux {
gpio-hog;
gpios = <TEGRA_MAIN_GPIO(R, 3) 0>;
output-low;
label = "pcie-lane2-mux";
status = "okay"; //this is for switch from usb3.0 to x1 PCIe on M.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 = "okay";
};
};
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)>;
phy-names = "utmi-0", "utmi-1", "utmi-2", "usb3-1", "usb3-2";
};
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";
};
e3325-usb3-std-A-HS {
status = "okay"; //this is usb2.0 port on M.2.
};
};
};
in “tegra186-quill-p3310-1000-a00-00-base.dts”
xhci@3530000 {
status = "okay";
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)>;
phy-names = "utmi-0", "utmi-1", "utmi-2", "usb3-1", "usb3-2";
nvidia,boost_cpu_freq = <800>;
};
pinctrl@3520000 {
status = "okay";
pinctrl-0 = <&tegra_xusb_padctl_pinmux_default>;
pinctrl-1 = <&vbus_en0_sfio_tristate_state>;
pinctrl-2 = <&vbus_en1_sfio_tristate_state>;
pinctrl-3 = <&vbus_en0_sfio_passthrough_state>;
pinctrl-4 = <&vbus_en1_sfio_passthrough_state>;
pinctrl-5 = <&vbus_en0_default_state>;
pinctrl-6 = <&vbus_en1_default_state>;
pinctrl-names = "default",
"vbus_en0_sfio_tristate", "vbus_en1_sfio_tristate",
"vbus_en0_sfio_passthrough", "vbus_en1_sfio_passthrough",
"vbus_en0_default", "vbus_en1_default";
tegra_xusb_padctl_pinmux_default: pinmux {
/* Quill does not support usb3-micro AB */
usb2-micro-AB {
nvidia,lanes = "otg-0";
nvidia,function = "xusb";
nvidia,port-cap = <TEGRA_PADCTL_PORT_OTG_CAP>;
nvidia,oc-pin = <0>;
};
usb2-std-A-port2 {
nvidia,lanes = "otg-1";
nvidia,function = "xusb";
nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
nvidia,oc-pin = <1>;
};
usb3-std-A-port2 {
nvidia,lanes = "usb3-1";
nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
nvidia,oc-pin = <1>;
};
usb3-std-A-port3 {
nvidia,lanes = "usb3-2";
nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
status = "okay";
};
e3325-usb3-std-A-HS {
nvidia,lanes = "otg-2";
nvidia,function = "xusb";
nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
status = "okay";
};
};
};
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";
};
};
2、 I connected an i210 NIC to each pceix1 in pcie#0_0, pcie#1_0 pcie#2_0, rebuild dtbs and flash
I used the dmesg command to get the following information.
nvidia@tegra-ubuntu:~$ dmesg | grep pci
[ 0.265901] GPIO line 459 (pcie-lane2-mux) hogged as output/low
[ 0.269470] iommu: Adding device 10003000.pcie-controller to group 50
[ 7.640183] tegra-pcie 10003000.pcie-controller: 1x1, 1x1, 1x1 configuration
[ 7.652543] tegra-pcie 10003000.pcie-controller: PCIE: Enable power rails
[ 7.688605] tegra-pcie 10003000.pcie-controller: probing port 0, using 1 lanes
[ 7.690558] tegra-pcie 10003000.pcie-controller: probing port 1, using 1 lanes
[ 7.692771] tegra-pcie 10003000.pcie-controller: probing port 2, using 1 lanes
[ 8.156366] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[ 8.560392] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[ 8.986369] tegra-pcie 10003000.pcie-controller: link 0 down, retrying
[ 8.988397] tegra-pcie 10003000.pcie-controller: link 0 down, ignoring
[ 9.387991] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[ 9.792389] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[ 10.204424] tegra-pcie 10003000.pcie-controller: link 2 down, retrying
[ 10.206440] tegra-pcie 10003000.pcie-controller: link 2 down, ignoring
[ 10.206795] tegra-pcie 10003000.pcie-controller: PCI host bridge to bus 0000:00
- But I can only find one i210 NIC using the lspci command.
nvidia@tegra-ubuntu:~$ lspci
00:02.0 PCI bridge: NVIDIA Corporation Device 10e6 (rev a1)
01:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
4、 I used the devmem2 command to get the lane mapping information.
root@tegra-ubuntu:~# ./devmem2 0x02520284 b
/dev/mem opened.
Memory mapped at address 0x7f7fe8d000.
Value at address 0x2520284 (0x7f7fe8d284): 0x0
root@tegra-ubuntu:~# ./devmem2 0x02530284 b
/dev/mem opened.
Memory mapped at address 0x7fb6cb5000.
Value at address 0x2530284 (0x7fb6cb5284): 0x1
root@tegra-ubuntu:~# ./devmem2 0x02540284 b
/dev/mem opened.
Memory mapped at address 0x7f9e10d000.
Value at address 0x2540284 (0x7f9e10d284): 0x1
root@tegra-ubuntu:~# ./devmem2 0x02550284 b
/dev/mem opened.
Memory mapped at address 0x7f904a7000.
Value at address 0x2550284 (0x7f904a7284): 0x1
root@tegra-ubuntu:~# ./devmem2 0x02560284 b
/dev/mem opened.
Memory mapped at address 0x7f85937000.
Value at address 0x2560284 (0x7f85937284): 0x1
root@tegra-ubuntu:~# ./devmem2 0x02570284 b
/dev/mem opened.
Memory mapped at address 0x7f95d2b000.
Value at address 0x2570284 (0x7f95d2b284): 0x2
It still seems to be PCIe x 4 mode
I need help!