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.

DM3730 + TPS65930: Random VBUS detection issue in OTG mode

Other Parts Discussed in Thread: TPS65930, DM3730, TPS65950

I have a device based on DM3730, TPS65930 is used as USB PHY, BSP is based on TI PSP 04.02.00.07 and there are no changes to USB stuff.  It is connected to the system with USB and used as CDC Ethernet gadget. It has its own power supply so USB power is not used. So the problem is that after cold start everything works as it supposed to but if one performs certain number of software restarts (usually 2-5) device will go in the state where it is not detected by USB host. During investigation I found that MUSB reports absence of VBUS (DEVCTRL contains 0x80) and does not enable gadget subsystem. At the same time TPS65930 has VBUS_PRES flag set in its STS_HW_CONDITIONS register. Another issue that to remove the device from this state one has to reset the power for this device, USB cable disconnect does not help to recover it from this state. So I am kind of stuck there and would appreciate any advice how to diagnose and fix the issue.

  • So still fighting with the problem. I've checked all parts of the subsystem: PHY driver, OTG glue layer and MUSB driver but do not see anything suspicious. Even if limit configuration to minimal the behavior is the same as before: MUSB goes to the state where it does not see VUSB even if PHY does. It looks very similar to advisory 1.109 from DM3730 errata. This advisory talks about halting ULPI bus if access it from the software during TX CMD. The difference is that in my case it happens during start-up and it seems to be before any USB comm take place. 

    I'd really appreciate any advice on how to debug the state of MUSB module and ULPI bus. Also is there any way to make PHY sending RX CMD on request?

  • I did some more tests. As one potential solution I wanted to reset PHY by setting RST bit in FUNC_CTL register in order to make it sending CMD RX. So in working state reset works fine (I set bit, then I wait for bit to reset) but when system goes to the faulty state (please see above) PHY never comes back from reset: RST bit never gets reset. 

    How do I reset MUSB in such case?

  • The description of your problem matches my problem.  I am using an DM3730 with a TPS65950.  After several soft resets, my OTG controller intrusb register reports a VBUSERR.  Soft resets do not fix the problem, only a hard reset.

    Have you solved your issue? If so, can you please help me.

    Thank you

  • Unfortunately I could not resolve the issue and had to use the hard reset workaround (in my design DM3730 is a slave to other system). At the same TI has provided no help at all on this problem.

  • Interesting, are you asserting the board reset low, or are you depriving the board of actual power?

  • Since it is a slave, I reset the power.

    I am not sure but as far as I remember board reset did not help.

  • You are correct, a board reset does not help.  Only a hard reset helps.

    I do not have the luxury of a hard reset.  If I find something out I will let you know.

    Thank you