Hello.
I made a Jetson tx2 custom board.
I checked each port on the custom board after installing OS.
Ethernet and HDMI is ok .USB is don’t work.
The custom board has one usb 2.0 micro-b and two usb 3.0 type-a.
USB2.0 micro
- USB0_VBUS_DET(B37)
- USB0_OTG_ID(A36)
- USB0_D(B39, B40)
- USB0_EN_OC(A17)
USB3.0 Type-A 1
- USB_SS0_RX(F43, F44)
- USB_SS0_TX(C43, C44)
- USB1_D(A38, A39)
- USB1_EN_OC(A18)
USB3.0 Type-A 2
- USB_SS1_RX(G42, G43)
- USB_SS1_TX(D42, D43)
- USB2_D(B42, B43)
- USB2_EN_OC(A19)
When the device tree was modified in the following order, ‘USB2.0 micro’ and ‘USB3.0 Type-A 1’ worked in host mode.
[L4T r28.2.1]
-
Modify ODMDATA in p2771-0000.conf.common file
ODMDATA=0x7090000 -
Modify ‘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(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 {
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 {
usb2-micro {
nvidia,lanes = "otg-0";
nvidia,function = "xusb";
nvidia,port-cap = <TEGRA_PADCTL_PORT_OTG_CAP>;
status = "okay";
};
usb2-1 {
nvidia,lanes = "otg-1";
nvidia,function = "xusb";
nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
status = "okay";
};
usb2-2 {
nvidia,lanes = "otg-2";
nvidia,function = "xusb";
nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
status = "okay";
};
usb3-0 {
nvidia,lanes = "usb3-0";
nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
status = "okay";
};
usb3-1 {
nvidia,lanes = "usb3-1";
nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
status = "okay";
};
usb3-2 {
nvidia,lanes = "usb3-2";
nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
status = "okay";
};
};
};
pcie-controller@10003000 {
status = “okay”;
pci@1,0 {
nvidia,num-lanes = <2>;
status = “okay”;
};
pci@2,0 {
nvidia,num-lanes = <1>;
status = “okay”;
};
pci@3,0 {
nvidia,num-lanes = <1>;
status = “disabled”;
};
};
usb_cd {
status = “okay”;
phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>;
phy-names = “otg-phy”;
};
xotg {
status = "okay";
phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>;
phy-names = "otg-usb2";
};
xudc@3550000 {
status = "okay";
phys = <&tegra_xusb_padctl TEGRA_PADCTL_PHY_UTMI_P(0)>,
<&tegra_xusb_padctl TEGRA_PADCTL_PHY_USB3_P(0)>;
phy-names = "usb2", "usb3";
emc-frequency = <150000000>;
};
-
Modify ‘tegra186-quill-p3310-1000-c03-00-base.dts’
gpio@2200000 {
status = “okay”;sdmmc-wake-support-input { status = "okay"; }; sdmmc-wake-support-output { status = "okay"; }; pcie0_lane2_mux { status = "disabled"; };
};
-
Comment out at tegra186-quill-p3310-1000-c03-00-base.dts
xhci@3530000, pcie-controller@10003000 and pinctrl@3520000 -
Modify ‘tegra186-quill-power-tree-p3310-1000-a00-00.dtsi’
vbus-2-supply = <&vdd_usb2_5v> → vbus-2-supply = <&battery_reg>; -
Comment out the details below in tegra186-quill-p3310-1000-a00-plugin-manager.dtsi
“fragment-500-pcie-config”, “fragment-500-xusb-config”, “fragment-500-e3325-pcie”
Upload the modified file and kernel log.
tegra186-quill-p3310-1000-a00-00-base.dts.txt (5.9 KB) tegra186-quill-p3310-1000-a00-plugin-manager.dtsi.txt (6.8 KB) tegra186-quill-p3310-1000-c03-00-base.dts.txt (2.4 KB) tegra186-quill-power-tree-p3310-1000-a00-00.dtsi.txt (8.8 KB)
kernel.log (71.7 KB)
How do I modify the device tree to operate the remaining one usb(USB3.0 Type-A 2)?