iMX6ULL USB VBUS latching

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

iMX6ULL USB VBUS latching

928 Views
tloten1
Contributor I

Hi,

I've got an iMX6ULL SoM, kernel version 5.4.3, to which we periodically connect a USB device to usb2, and have a constantly-connected 4G modem on usb1. The USB ports are configured to host mode in the device-tree.

I'm finding that we only detect the first time peripheral is connected. Subsequent reconnects are not detected. I suspect the issue is something to do with the USB_VBUS lines.

USB1 VBUS permanently connected to 5V - as the modem is always connected.

USB2 VBUS is connected via a load-switch to 5V. The USB device is also connected to this load-switched 5V line. Here's a basic overview:

Capture.PNG

If I measure the voltage on USB2_VBUS, it starts off at 0V when the system boots. This is as expected, as the load-switch is initially off.

When we connect the peripheral by enabling the load-switch, USB2_VBUS goes to 5V. This is fine. Linux detects the USB device and we can communicate with it just fine.

When we turn off the load-switch, USB2_VBUS drops to approximately 4.4V. It does not gradually drop over time. Attempting to discharge it with 1K resistor has no effect.  A 100-ohm short drags it to 3.7V temporarily. A 10-ohm short does cause it to reset to 0V, and when the short is removed, it remains at 0V.

When we turn the load-switch on again, USB2_VBUS rises again to 5V. However linux does not detect the USB device this time.

The only way to get linux to detect the device on subsequent reconnects is to short USB2_VBUS as described above.

Note that even if no usb device is connected, the USB2_VBUS still goes between 4.4V and 5V.

 

My guess is that because USB_VBUS is never dropping to 0V, the usb device is not properly resetting as it is still being powered by the 4.4V that the imx6 appears to be outputting.

 

Hard-wiring USB2_VBUS to 5V does work - we can toggle the load-switch many times and the device is always detected. However my understanding is that this will keep the USB system constantly powered and cause 1-2mA additional current draw. When the overall current-draw during suspend is 4.5mA, this extra 1-2mA is quite substantial.

Is there a way I can cause USB2_VBUS to not latch? Or, somehow force it to reset between connection intervals?

0 Kudos
Reply
0 Replies