Xavier simple USB 2.0 device tree implemenation

L4T release 32.7.1
Xavier AGX on custom carrier board

We have implemented a custom carrier for Xavier AGX and lead out a simple USB 2.0 port. The USB 2.0 port uses G10, USB3_N, and G11, USB3_P. GPIO 5 is used to enable USB power to the end device. I’m cannot share schematics on a public forum.

Device tree changes include:

  • removing USB 3.0 support as it is unused
  • setting usb2-0 to host mode as hardware doesn’t support OTG
  • removed ucsi_ccg nodes
  • removed typec extcon-cables
  • removed USB3 xusb_padctl support
  • deleting sata voltage regultors as they are unused:
  • setting up the usb port to use a dummy regulator
  • hogging gpio 5 high, dap6_dout_pa1, to power devices

I’m seeing the USB driver fall into power save mode and never exit:
[ 14.354480] tegra-xusb 3610000.xhci: Upgrade port 0 to USB3.0
[ 14.354486] tegra-xusb 3610000.xhci: Upgrade port 1 to USB3.0
[ 14.453077] usb usb1: usb_suspend_both: status 0
[ 14.461181] usb usb2: usb_suspend_both: status 0
[ 14.557335] usbcore: registered new interface driver usbhid
[ 14.557337] usbhid: USB HID core driver
[ 16.356810] tegra-xusb 3610000.xhci: entering ELPG
[ 16.465854] tegra-xusb 3610000.xhci: entering ELPG done

What device tree changes am I missing to prevent the USB port from dropping into power save?

Thank you.

The failure may be due to bad signal quality. You would need to do compliance test for the custom board. Please take a look at the tuning guide:

Hi DaneLLL,

This isn’t a hardware issue; the problem is all device tree issues. We have tested the USB 2.0 hardware and gotten it working under certain cirmstances where we do not use a dummy regulator. We aren’t using the p2822_vdd_5v_sata regulator in our hardware design, so it’s disabled.

What causes the tegra-xusb driver to drop into and out of power save?

What is the correct way to hook in a dummy regulator to the USB port?

Are there any CBoot boot/power DTB changes necessary to set up a dummy regulator on the USB port?


Please check [USB Lane Mapping] section in adaptation guide. You would need to set up vbus-supply like:

                ports {
                        usb2-0 {
                               status = "okay";
                               mode = "host";
                              vbus-supply = <&__usb_vbus_supply__>; // set up vbus supply

DaneLLL. Thanks. We’ll look at the vbus-supply and do more testing.

We got USB 2.0 working. All device tree issues:
1/ vbus-supply
2/ xusb_padctl

It took seeding the tegra xusb driver with printk’s to see how the device tree was being parsed and get details on errors.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.