Programmatically switch USB ports off and on on AGX Xavier and 3rd party carrier board

I’m trying to programmatically switch UBS ports off and on on an AGX Xavier module mounted on a 3rd party carrier board.

I tried this approach Switch on and off usb ports programmatically on AGX - #5 by DaneLLL to no avail.

Does it depend on the carrier board design? Is there any other solution?

Yes, it is related to board design. If their port is using system power, then it may not be able to switch on/off.

1 Like

@WayneWWW, thanks. Is there any way to test if that’s the case? Unfortunately the carrier board’s manufacturer is not very responsive and doesn’t provide any details.

Generally I would convert vendor’s dtb back and check which regulator they are using for vbus-supply.

If this vbus-supply is a dummy one, which is generally “battery_reg”, then it is not able to be toggled with Dane’s method above.

@WayneWWW from what I understand from the attached .dts file, the regulator used for the USB ports I need to reset is vdd-usb-3v3. I tried to use Dane’s method above, but it seems that I can’t disable that regulator, i.e., even if I put disabled inside the state file, nothing happens and the state file always says enabled. Am I missing something?
output.dts (355.4 KB)

Hi andrea,

I am a little confused. Why vdd-usb-3v3? Your dts tells me you have 3 ports use 0x1e and 1 port uses 0xda

0x1e is vdd-ac-bat and 0xda is vdd-5v-sata. 0x1e is always-on power source which cannot be disabled.

		usb2-0 {
			status = "okay";
			vbus-supply = <0x1e>;
			mode = "host";
		};

		usb2-1 {
			status = "okay";
			vbus-supply = <0x1e>;
			mode = "host";
		};

		usb2-2 {
			status = "okay";
			vbus-supply = <0x1e>;
			mode = "host";
		};

		usb2-3 {
			status = "okay";
			vbus-supply = <0xda>;
			mode = "host";
		};

@WayneWWW ok, I guess I can’t read the dts properly. Thanks for checking it out!

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