Hi Linuxdev,
Thanks for your reply. Happy New Year.
I have tried to connect the TX2 without any modifications in “/opt/nvidia/l4t-usb-device-mode/” but problem is still there. The TX2 is not detected on host PC. I have monitor dmesg --follow
and I got:
[ 4342.304450] usb 1-1: USB disconnect, device number 26
[ 4342.304475] usb 1-1.2: USB disconnect, device number 27
[ 4342.304495] usb 1-1.2.2: USB disconnect, device number 28
[ 4342.483503] usb 1-1.2.4: USB disconnect, device number 29
[ 4344.046652] usb usb1: usb_suspend_both: status 0
[ 4344.046688] tegra-xusb 3530000.xhci: entering ELPG
[ 4344.052202] tegra-xusb 3530000.xhci: entering ELPG done
[ 4354.055335] tegra-xusb 3530000.xhci: exiting ELPG
[ 4354.060149] tegra-xusb 3530000.xhci: Firmware timestamp: 2018-12-26 10:30:04 UTC, Version: 55.12 release
[ 4354.061486] tegra-xusb 3530000.xhci: exiting ELPG done
I have checked for device tree configuration for USB. This is my device tree configuration
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 = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-0}>;
phy-names = "usb2";
nvidia,boost-cpu-freq = <1200>;
};
usb_cd {
status = "okay";
phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-0}>;
phy-names = "otg-phy";
nvidia,xusb-padctl = <&xusb_padctl>;
};
xhci@3530000 {
status = "okay";
phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-0}>,
<&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-1}>,
<&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-2}>,
<&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-0}>,
<&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-1}>,
<&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-2}>;
phy-names = "usb2-0", "usb2-1", "usb2-2", "usb3-0", "usb3-1", "usb3-0";
};
xusb_padctl@3520000 {
status = "okay";
pinctrl-0 = <&vbus_en0_default_state>;
pinctrl-1 = <&vbus_en1_default_state>;
pinctrl-2 = <&vbus_en0_sfio_tristate_state>;
pinctrl-3 = <&vbus_en1_sfio_tristate_state>;
pinctrl-4 = <&vbus_en0_sfio_passthrough_state>;
pinctrl-5 = <&vbus_en1_sfio_passthrough_state>;
pinctrl-names = "vbus_en0_default", "vbus_en1_default",
"vbus_en0_sfio_tristate", "vbus_en1_sfio_tristate",
"vbus_en0_sfio_passthrough", "vbus_en1_sfio_passthrough";
pads {
usb2 {
lanes {
usb2-0 {
nvidia,function = "xusb";
status = "disabled";
};
usb2-1 {
nvidia,function = "xusb";
status = "disabled";
};
usb2-2 {
nvidia,function = "xusb";
status = "disabled";
};
};
};
usb3 {
lanes {
usb3-0 {
nvidia,function = "xusb";
status = "disabled";
};
usb3-1 {
nvidia,function = "xusb";
status = "disabled";
};
usb3-2 {
nvidia,function = "xusb";
status = "disabled";
};
};
};
};
ports {
usb2-0 {
mode = "otg";
vbus-supply = <&battery_reg>;
nvidia,oc-pin = <0>;
status = "disabled";
};
usb2-1 {
mode = "host";
vbus-supply = <&battery_reg>;
nvidia,oc-pin = <1>;
status = "disabled";
};
usb2-2 {
mode = "host";
vbus-supply = <&battery_reg>;
status = "disabled";
};
usb3-0 {
nvidia,usb2-companion = <0>;
status = "disabled";
};
usb3-1 {
nvidia,usb2-companion = <1>;
status = "disabled";
};
usb3-2 {
nvidia,usb2-companion = <2>;
status = "disabled";
};
};
};
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-port0 {
nvidia,lanes = "otg-0";
nvidia,function = "xusb";
nvidia,port-cap = <TEGRA_PADCTL_PORT_OTG_CAP>;
nvidia,oc-pin = <0>;
status = "disabled";
};
usb2-port1 {
nvidia,lanes = "otg-1";
nvidia,function = "xusb";
nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
nvidia,oc-pin = <1>;
status = "disabled";
};
usb2-port2 {
nvidia,lanes = "otg-2";
nvidia,function = "xusb";
nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
nvidia,oc-pin = <2>;
status = "disabled";
};
usb3-port0 {
nvidia,lanes = "usb3-0";
nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
nvidia,oc-pin = <0>;
status = "disabled";
};
usb3-port1 {
nvidia,lanes = "usb3-1";
nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
nvidia,oc-pin = <1>;
status = "disabled";
};
usb3-port2 {
nvidia,lanes = "usb3-2";
nvidia,port-cap = <TEGRA_PADCTL_PORT_HOST_ONLY>;
nvidia,oc-pin = <2>;
status = "disabled";
};
};
};
One of the top level device tree file is making those nodes status to “okay” so final dts file have status = "okay"
.
Here is the dmesg log related to xudc:
[ 0.449017] iommu: Adding device 3550000.xudc to group 45
[ 0.449040] arm-smmu: forcing sodev map for 3550000.xudc
[ 3.673150] tegra-xudc-new 3550000.xudc: device count: 1
[ 3.674436] tegra-xudc-new 3550000.xudc: vbus state: 0
[ 3.674464] tegra-xudc-new 3550000.xudc: entering ELPG
[ 3.675348] tegra-xudc-new 3550000.xudc: entering ELPG done
Please correct me if anything wrong in device tree and help me connect the TX2 with host.
Thanks,
Asif Ikbal