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.

USBOTG problems with TPS65960 otg transceiver

Hello friends,

I'm trying to make TPS659x usbotg transceiver work with Mistral REV G board. I rebuilt the OS with OTG Driver (TPS659x) selected. Hardware was also modified properly. When I run the new OS and connected activesync cable to PC, activesync connection was established and I could browse the EVM and copy files between EVM and PC. If I connected USB memory stick to EVM, the USB memory stick could be recognized also.

However I noticed one issue with activesync connection. After a while (sometimes 1 hour, sometime shorter), activesync connection was broken and re-established again. I put some debug messages in the driver and found that the driver got interrupted with m_pOTG->intr_usb = 0x28 which INTRUSB_DISCONN was set to 1. Therefore OTG_ConfigISR_stage2 calls m_pOTG->pFuncs[DEVICE_MODE-1]->Disconnect((void *)m_pOTG);. But later on PC would reconnect to EVM.

I have a BeagleBoardXm with pre-built CE7 OS image and I observed the same issue.

Both boards have the same problem with two different PCs.

I haven't observed the same problem when EVM connects to a USB memory stick which leads me suspect something wrong on VBUS.

If the VBUS comparator inside the TPS659x USBOTG transceiver dectects VBUS lower than threshold, it will issue an interrupt saying host-disconnected. Am I correct?

Has anybody encountered the similar problem?

Regards,

James

  • We don't recall having met that issue on our BeagleBoards, but it indeed looks like something going wrong on the VBUS. There could be lots of reasons for such an issue, including hardware issues.

    The best way to debug this would be to have the debug traces inside the OTG driver enabled, while monitoring the voltage of VBUS and check if something noticeable happens when the issue arises. Good luck!

  • Thanks for your reply.

    The disconnection I observed on BeagleBoards happens usually 1 hour (or maybe longer) after activesync connection.

    I also hooked up scope with VBUS signal and set trigger to falling edge with offset 4.8V which means that if the VBUS drops lower than 4.8V, the scope will capture it. After the overnight test, activesync still gets disconnected, but VBUS is always around 5V which comes from PC.

    In the driver, I put some debug messages to dump UPLI register values.

    When there is no problem, OMAPMHSUSBOTG::ThreadRun will have a timeout with  m_timeout = DO_INACTIVITY_TIMEOUT. The Register values are like the following:

    TPS659XX ULPI Register
        Function Control=40
        Interface Control=18
        OTG Control=5
        Interrupt Latch=0
        ID Status=10
        TWL_VUSB_DEDICATED1=14
        TWL_VUSB_DEDICATED2=0
        TWL_VUSB3V1_DEV_GRP=e
        TWL_VUSB3V1_TYPE=0
        TWL_VUSB1V5_DEV_GRP=e
        TWL_VUSB1V5_TYPE=0
        TWL_VUSB1V8_DEV_GRP=e
        TWL_VUSB1V8_TYPE=0

    which is high-speed in DEVICE mode.

    However, I notice that right before m_pOTG->intr_usb changes to 0x28, the ULPI registers are like these:

    TPS659XX ULPI Register
        Function Control=41
        Interface Control=18
        OTG Control=7
        Interrupt Latch=1
        ID Status=0
        TWL_VUSB_DEDICATED1=14
        TWL_VUSB_DEDICATED2=0
        TWL_VUSB3V1_DEV_GRP=e
        TWL_VUSB3V1_TYPE=0
        TWL_VUSB1V5_DEV_GRP=e
        TWL_VUSB1V5_TYPE=0
        TWL_VUSB1V8_DEV_GRP=e
        TWL_VUSB1V8_TYPE=0

    which somehow changes to full-speed, HOST mode.

    After that message, in OTG_ConfigISR_stage2 "Disconnect detected" is displayed and m_pOTG->intr_usb is mostly 0x28, sometimes 0x29.

    I don't know why the Transceiver changes from high-speed to full-speed.

    Do you have any idea?

    Regards,

    James