Hi,
Is it possible to configure two ports of the standard Xavier AGX Dev kit as device mode (J512 and J513)?
I’m able to switch the device port (or OTG) from J512 to J513 following the adaptation guide, but when I try to use the device mode on both ports at the same time It does not work. (lsusb on the Xavier does not produce any output and the scripts under /opt/nvidia/l4t-usb-device-mode/ don’t work)
My device tree:
xusb_padctl@3520000 {
compatible = "nvidia,tegra19x-xusb-padctl";
reg = <0x0 0x3520000 0x0 0x1000 0x0 0x3540000 0x0 0x1000>;
reg-names = "padctl", "ao";
interrupts = <0x0 0xa7 0x4>;
resets = <0x5 0x72>;
reset-names = "padctl";
status = "okay";
pex_dvdd-supply = <0x6b>;
pex_hvdd-supply = <0x6c>;
pex_pll_hvdd-supply = <0x6c>;
vclamp_usb-supply = <0xa>;
avdd_usb-supply = <0xcb>;
avdd_pll_nvhs_eutmip-supply = <0x6c>;
linux,phandle = <0xcd>;
phandle = <0xcd>;
pads {
usb2 {
clocks = <0x4 0xa5>;
clock-names = "trk";
lanes {
usb2-0 {
status = "okay";
#phy-cells = <0x0>;
nvidia,function = "xusb";
linux,phandle = <0xce>;
phandle = <0xce>;
};
usb2-1 {
status = "okay";
#phy-cells = <0x0>;
nvidia,function = "xusb";
linux,phandle = <0xd0>;
phandle = <0xd0>;
};
usb2-2 {
status = "okay";
#phy-cells = <0x0>;
nvidia,function = "xusb";
linux,phandle = <0xd2>;
phandle = <0xd2>;
};
usb2-3 {
status = "okay";
#phy-cells = <0x0>;
nvidia,function = "xusb";
linux,phandle = <0xd1>;
phandle = <0xd1>;
};
};
};
usb3 {
lanes {
usb3-0 {
status = "okay";
#phy-cells = <0x0>;
nvidia,function = "xusb";
linux,phandle = <0xd3>;
phandle = <0xd3>;
};
usb3-1 {
status = "disabled";
#phy-cells = <0x0>;
};
usb3-2 {
status = "okay";
#phy-cells = <0x0>;
nvidia,function = "xusb";
linux,phandle = <0xcf>;
phandle = <0xcf>;
};
usb3-3 {
status = "okay";
#phy-cells = <0x0>;
nvidia,function = "xusb";
linux,phandle = <0xd4>;
phandle = <0xd4>;
};
};
};
};
ports {
usb2-0 {
status = "okay";
vbus-supply = <0x1e>;
mode = "otg";
};
usb2-1 {
status = "okay";
vbus-supply = <0x1e>;
mode = "Device";
};
usb2-2 {
status = "okay";
vbus-supply = <0x1e>;
mode = "host";
};
usb2-3 {
status = "okay";
vbus-supply = <0xcc>;
mode = "host";
};
usb3-0 {
status = "okay";
nvidia,usb2-companion = <0x1>;
};
usb3-1 {
status = "disabled";
};
usb3-2 {
status = "okay";
nvidia,usb2-companion = <0x0>;
};
usb3-3 {
status = "okay";
nvidia,usb2-companion = <0x3>;
nvidia,usb3-gen1-only = <0x1>;
};
};
prod-settings {
#prod-cells = <0x4>;
prod_c_bias {
prod = <0x0 0x284 0x38 0x38>;
};
prod {
prod = <0x0 0x24 0xfff 0x0>;
};
};
};
usb_cd {
compatible = "nvidia,tegra194-usb-cd";
nvidia,xusb-padctl = <0xcd>;
phys = <0xce>;
//phys = <0xd0>;
phy-names = "otg-phy";
status = "okay";
linux,phandle = <0x171>;
phandle = <0x171>;
};
xudc@3550000 {
compatible = "nvidia,tegra194-xudc";
reg = <0x0 0x3550000 0x0 0x8000 0x0 0x3558000 0x0 0x1000>;
interrupts = <0x0 0xa6 0x4>;
clocks = <0x4 0x109 0x4 0x115 0x4 0x113 0x4 0x110>;
nvidia,xusb-padctl = <0xcd>;
iommus = <0x2 0x1c>;
dma-coherent;
status = "okay";
avdd-usb-supply = <0xcb>;
extcon-cables = <0x6e 0x0>;
//extcon-cables = <0x6f 0x0>;
extcon-cable-names = "vbus";
#extcon-cells = <0x1>;
phys = <0xce 0xcf>;
//phys = <0xd0 0xd3>;
phy-names = "usb2", "usb3";
nvidia,boost_cpu_freq = <0x4b0>;
linux,phandle = <0x172>;
phandle = <0x172>;
};
xudc@35a0000 {
compatible = "nvidia,tegra194-xudc";
reg = <0x0 0x3550000 0x0 0x8000 0x0 0x3558000 0x0 0x1000>;
interrupts = <0x0 0xa6 0x4>;
clocks = <0x4 0x109 0x4 0x115 0x4 0x113 0x4 0x110>;
nvidia,xusb-padctl = <0xcd>;
iommus = <0x2 0x1c>;
dma-coherent;
status = "okay";
avdd-usb-supply = <0xcb>;
extcon-cables = <0x6f 0x0>;
extcon-cable-names = "vbus";
#extcon-cells = <0x1>;
phys = <0xd0 0xd3>;
phy-names = "usb2-1", "usb3-0";
nvidia,boost_cpu_freq = <0x4b0>;
linux,phandle = <0x186>;
phandle = <0x186>;
};
xhci@3610000 {
compatible = "nvidia,tegra194-xhci";
reg = <0x0 0x3610000 0x0 0x40000 0x0 0x3600000 0x0 0x10000>;
interrupts = <0x0 0xa3 0x4 0x0 0xa4 0x4 0x0 0xa7 0x4>;
interrupt-parent = <0x32>;
clocks = <0x4 0x10a 0x4 0x10b 0x4 0x10c 0x4 0x10d 0x4 0x10e 0x4 0x10f 0x4 0x110 0x4 0x111 0x4 0x113 0x4 0x115 0x4 0x67 0x4 0xe 0x4 0x64>;
clock-names = "xusb_hs_src", "xusb_host", "xusb_core_superspeed_clk", "xusb_falcon_src", "xusb_falcon_host_clk", "xusb_falcon_superspeed_clk", "xusb_fs_src", "xusb_fs_host_clk", "xusb_ss_src", "xusb_ss", "pll_u_480m", "clk_m", "pll_e";
nvidia,xusb-padctl = <0xcd>;
iommus = <0x2 0x1b>;
dma-coherent;
status = "okay";
extcon-cables = <0x6e 0x1>;
//extcon-cables = <0x6f 0x1>;
extcon-cable-names = "id";
#extcon-cells = <0x1>;
//phys = <0xce 0xd0 0xd1 0xd2 0xcf 0xd3 0xd4>;
//phy-names = "usb2-0", "usb2-1", "usb2-3", "usb2-2", "usb3-2", "usb3-0", "usb3-3";
phys = <0xce 0xd1 0xd2 0xcf 0xd4>;
phy-names = "usb2-0", "usb2-3", "usb2-2", "usb3-2", "usb3-3";
linux,phandle = <0x173>;
phandle = <0x173>;
};
It’s my first time modifying a device tree, so I’m sorry if the mistake is too obvious.
Also, as a side question, does the xUDC controller on the board support USB 3.1 gen 2 speeds? I’m stuck at 5Gbps and I’ve already tried a few different cables.
Thanks in advance.