This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

USB1 Host over-current issue and USB1_DRVVBUS question

Expert 2280 points

Hi,

I'm facing over-current issue when attaching a specific USB Mass Storage device to USB1 host port of a AM335x custom board. It does not happen always but very frequently.

[  213.376573] musb-hdrc musb-hdrc.1: VBUS_ERROR in a_wait_bcon (91, <VBusValid), retry #1, port1 00000100
[  213.857740] musb-hdrc musb-hdrc.1: VBUS_ERROR in a_wait_vrise (91, <VBusValid), retry #2, port1 00000100
[  214.329202] musb-hdrc musb-hdrc.1: VBUS_ERROR in a_wait_vrise (91, <VBusValid), retry #3, port1 00000100
[  214.799941] musb-hdrc musb-hdrc.1: VBUS_ERROR in a_wait_vrise (90, <VBusValid), retry #3, port1 00080108
[  215.026934] hub 1-0:1.0: over-current condition on port 1
[  215.269959] musb-hdrc musb-hdrc.1: VBUS_ERROR in a_wait_vrise (90, <VBusValid), retry #3, port1 00080108
...and so on...

Looking at MUSB kernel driver, I see that USB core arises VBUSERROR interrupts, which are filtered up to three and then an over-current detection is managed. I supposed that in this case the USB1_DRVVBUS pin should be pulled down, but I did not find anything in driver source code. Neither the TRM states anything about it. Does the USB1_DRVVBUS is managed by USB PHY hw in an autonomous way, or is it driven in some way by MUSB kernel driver software?

Is there any way to force the USB1 port to be powered off, acting at kernel driver level?

Thanks in advance for any clarification.

Best regards, Max