如何开启英伟达TX2的所有USB3.0口

    TX2新烧完系统之后,默认只有一个USB3.0口使能了,实际上TX2最多可以使能3个USB3.0口,在TX2的design guide中,可以找到相应的配置说明,见下图。

如何开启英伟达TX2的所有USB3.0口_第1张图片

TX2默认的配置为配置2,只使能了USB_SS#0。为了使能3个USB3.0口,需要将USB配置为配置4。

    配置的前提是你的上位机上已经安装了JetPack。并且你已经掌握了TX2编译内核和DTB的方法,以及烧写DTB的方法。如果还不会的同学,可以查阅相关资料,或者参考我的其它帖子。

首先需要进入 ../jetpack/64_TX2/Linux_for_Tegra文件夹,打开这个文件夹下的p2771-0000.conf.common文件,将这个文件中的ODMDATA的值修改为0x7090000,如下图所示,这个设置将USB配置为配置4。

如何开启英伟达TX2的所有USB3.0口_第2张图片

修改完配置之后,就需要修改TX2的设备树DTB。需要修改TX2内核源码,并重新生成DTB文件,再将DTB文件烧写到TX2中。需要修改的内容如下:

1、首先要修改源码中的hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-plugin-manager/ tegra186-quill-p3310-1000-a00-plugin-manager.dtsi 文件中的内容。将这个文件中与下面三段相关的内容注释掉

fragment-500-pcie-config

fragment-500-xusb-config

fragment-500-e3325-pcie

如下所示:

		/*fragment-500-pcie-config {
			ids = ">=3310-1000-500";
			override@0 {
				target = <&tegra_pcie>;
				_overlay_ {
					pci@1,0 {
						nvidia,num-lanes = <4>;
					};
					pci@2,0 {
						nvidia,num-lanes = <0>;
					};
					pci@3,0 {
						nvidia,num-lanes = <1>;
					};
				};
			};
		};*/

		/*fragment-500-xusb-config {
			ids = ">=3310-1000-500";
			override@0 {
				target = <&{/xhci@3530000}>;
				_overlay_ {
					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)>;
					phy-names = "utmi-0", "utmi-1", "utmi-2", "usb3-0";
				};
			};
			override@1 {
				target = <&tegra_xusb_padctl_pinmux_default>;
				_overlay_ {
					usb3-std-A-port2 {
						nvidia,lanes = "usb3-0";
					};
					e3325-usb3-std-A-HS {
						status = "okay";
					};
				};
			};
		};*/

		/*fragment-500-e3325-pcie {
			enable-override-on-all-matches;
			ids = ">=3310-1000-500";
			odm-data = "enable-pcie-on-uphy-lane0";
			override@0 {
				target = <&{/xhci@3530000}>;
				_overlay_ {
					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)>;
					phy-names = "utmi-0", "utmi-1", "utmi-2";
				};
			};
			override@1 {
				target = <&tegra_xusb_padctl_pinmux_default>;
				_overlay_ {
					usb3-std-A-port2 {
						status = "disabled";
					};
				};
			};

			override@2 {
				target = <&tegra_main_gpio>;
				_overlay_ {
					pcie0_lane2_mux {
						status = "okay";
					};
				};
			};
		};*/

2、另外需要修改hardware/nvidia/platform/t18x/quill/kernel-dts/tegra186-quill-p3310-1000-c03-00-base.dts文件中的内容,修改如下:

xudc@3550000 {
    status = "okay";
    phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(1)>,
        <&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(0)>;
    phy-names = "usb2", "usb3";
};
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 = ;
			};
			usb2-1 {
			    nvidia,lanes = "otg-1";
			    nvidia,function = "xusb";
			    nvidia,port-cap = ;
			};
			usb2-2 {
			    nvidia,lanes = "otg-2";
			    nvidia,function = "xusb";
			    nvidia,port-cap = ;
			};
			usb3-std-A-port2 {
				nvidia,lanes = "usb3-0";
				nvidia,port-cap = ;
				status = "okay";
			};
			usb3-std-A-port3 {
				nvidia,lanes = "usb3-2";
				nvidia,port-cap = ;
				status = "okay";
			};
			usb3-std-A-port4 {
				nvidia,lanes = "usb3-1";
				nvidia,port-cap = ;
				status = "okay";
			};
		};
	};

3、接下来需要修改hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-platforms/tegra186-quill-power-tree-p3310-1000-a00-00.dtsi文件中的内容。将vbus-2-supply = <&vdd_usb2_5v>;修改为vbus-2-supply = <&battery_reg>;如下所示:

  pinctrl@3520000 {
     vbus-0-supply = <&vdd_usb0_5v>; 
     vbus-1-supply = <&vdd_usb1_5v>;
     vbus-2-supply = <&battery_reg>; 
     vbus-3-supply = <&battery_reg>; 
     vddio-hsic-supply = <&battery_reg>;
     avdd_usb-supply = <&spmic_sd3>;
     vclamp_usb-supply = <&spmic_sd2>;
     avdd_pll_erefeut-supply = <&spmic_sd2>;
  };

修改完以上内容之后,重新编译内核和DTB,将生成的DTB文件烧写到TX2中,重新启动TX2,三个USB3.0口就可以完美运行了。

 

 

你可能感兴趣的:(英伟达,英伟达,TX2,USB3.0,DTB,设备树)