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.

OTG Host Not working during Device boot

Other Parts Discussed in Thread: SYSCONFIG

Hi,

I am using TPS 65930 PMIC and AM 3730 processor.I am facing problem in OTG host mode during boot.During boot,i have connected USB flash drive via OTG connected with the device.But the controller failed to enter into host mode.I am getting the following log messages.

From the log message it seems that i am getting invalid INTRUSB(0x4) value.Please help me in solving this issue.

Note:During insertion case, it is working fine.This issue is occuring only during boot up.

********************************************************************************

OMAPMHSUSBOTG::ThreadRun: Enable Interrupt waiting for connection!!!
***###StartUSBClock: EnableWakeupInterrupt(FALSE)
+StartUSBClock11
-StartUSBClock
ThreadRun::Initialize Interrupt with sysintr = 0x29
OTG -> Set SYSINTR = 0x29
OMAPMHSUSBVBUS::Init ++
OMAPMHSUSBVBUS::Init --
DevCtl = 0x80
Waiting ...
DevCtl = 0x80
IntrTxE = 0xffff
IntrRxE = 0xfffe
IntrUSBE = 0xf7
Power = 0x20
ResetEndPoints
OTG Interrupts(0x40) intr_tx(0x0) intr_rx(0x0)
Interrupt0 Variable INTRUSB(0x40) Devctl(0x80)
Interrupt1 Variable INTRUSB(0x40), TX(0x0), RX(0x0), DevCtl(0x80), m_dwStatus(0x0)
Session Request
Session Request(1, 1)
OMAPMHSUSBVBUS::ThreadRun ++
SoftResetMUSBController
***###StartUSBClock: EnableWakeupInterrupt(FALSE)
+StartUSBClock11
-StartUSBClock
ResetEndPoints
ResetEndPoints
OMAPMHSUSBVBUS::ThreadRun: USB removed 2
OMAPMHSUSBVBUS::ThreadRun Calling Disconnect
Device_Disconnect
UsbFnMdd!UfnMdd_Notify: Ignoring notification 0x00000001 - 0x00000000 from PDD
OTG Interrupts(0x0) intr_tx(0x0) intr_rx(0x0)
Interrupt0 Variable INTRUSB(0x0) Devctl(0x81)
Interrupt Variable INTRUSB No interrupt at all
Interrupt1 Variable INTRUSB(0x0), TX(0x0), RX(0x0), DevCtl(0x81), m_dwStatus(0x0)

OTG Interrupts(0x10) intr_tx(0x0) intr_rx(0x0)
Interrupt0 Variable INTRUSB(0x10) Devctl(0x3d)
Interrupt1 Variable INTRUSB(0x10), TX(0x0), RX(0x0), DevCtl(0x3d), m_dwStatus(0x0)
USB Connection for Host Side
Connect: DeviceType [A_DEVICE]
OTG Interrupts(0x4) intr_tx(0x0) intr_rx(0x0)
Interrupt0 Variable INTRUSB(0x4) Devctl(0x98)
Interrupt1 Variable INTRUSB(0x4), TX(0x0), RX(0x0), DevCtl(0x98), m_dwStatus(0x0)
USB Reset detected, it would be connection!!
USB Reset detected, it would be connection!!
INTR_USB = 0x4
DEVCTL = 0x98
INTRRX = 0x0, INTRTX = 0x0
Power Mode = 0x70
DMA INTR = 0x0
Reset: DeviceType [B_DEVICE]
Get HNP role switch to device
ResetEndPoints
WAIT_OBJECT_0 0x0 dwWaitRet : 0x0
VBusDetectIST:USB Removed
+AC_LINE_ONLINE
BatteryChgCurThd WAIT_OBJECT_0 0x0 dwWaitRet : 0x0
VUSB Removed
OMAPMHSUSBVBUS::ThreadRun: USB removed 2
OMAPMHSUSBVBUS::ThreadRun Calling Disconnect
Device_Disconnect
UsbFnMdd!UfnMdd_Notify: Ignoring notification 0x00000001 - 0x00000000 from PDD
BatteryChgCurThd WAIT_OBJECT_0 0x0 dwWaitRet : 0x1
USB OTG Disconnect 2
USB Cable Disconnected
GPIO_BAT_CHRGR_STATUS GPIO 161 STATUS = 0
OTG Interrupts(0x0) intr_tx(0x0) intr_rx(0x0)
Interrupt0 Variable INTRUSB(0x0) Devctl(0x88)
Interrupt Variable INTRUSB No interrupt at all
Interrupt1 Variable INTRUSB(0x0), TX(0x0), RX(0x0), DevCtl(0x88), m_dwStatus(0x58)
Disconnect Complete and Set IOCTRL again
m_bHNPSession set interrupt
OTG Interrupts(0x0) intr_tx(0x0) intr_rx(0x0)
Interrupt0 Variable INTRUSB(0x0) Devctl(0x88)
Interrupt Variable INTRUSB No interrupt at all
Interrupt1 Variable INTRUSB(0x0), TX(0x0), RX(0x0), DevCtl(0x88), m_dwStatus(0x20)
We can process role switch loading now
USB Reset detected, it would be connection!!
USB Reset detected, it would be connection!!
INTR_USB = 0x4
DEVCTL = 0x88
INTRRX = 0x0, INTRTX = 0x0
Power Mode = 0x60
DMA INTR = 0x0
Reset: DeviceType [B_DEVICE]
UsbFnMdd!UfnMdd_Notify: Ignoring notification 0x00000001 - 0x00000000 from PDD
UsbMsFn!STORE_Init: WriteProtect = 1
HNP Disable
USB Connected
BatteryChgCurThd WAIT_OBJECT_0 0x0 dwWaitRet : 0x1
USB OTG Connect 1

**********************************************************************************************************

  • This has been escalated to the factory team.

  • Here is some initial feedback from the factory team:
     
    From the log it seems it is not running Linux. But INTRUSB(0x4) indicates babble condition happened during musb transitioning from device to host mode. I guess the customer has to look at the hw first to see why babble happens.

    Maybe first try different usb devices (not limited to flash drives) to see if babble still happens.
  • Hi,

    Thanks for the the support.

    Yes.It is not running on Linux.But running on Wince 6.0 platform.

    Coming to babble interrupt,I tested with different usb devices and the results are as follow.

    1. Keyboard - Working fine without any issues during boot up.

    2.Mouse - host connection established.But Immediately disconnected from host mode.See the below log for mouse.

    *********************************************************************************

    Interrupt1 Variable INTRUSB(0x8), TX(0x0), RX(0x2), DevCtl(0x3d), m_dwStatus(0x0)
    OTG_ProcessEPx for ep 1, isRx 1
    DMA Interrupt Register = 0x8
    OTG Interrupts(0x28) intr_tx(0x0) intr_rx(0x0)
    Interrupt0 Variable INTRUSB(0x28) Devctl(0x19)
    Interrupt1 Variable INTRUSB(0x28), TX(0x0), RX(0x0), DevCtl(0x19), m_dwStatus(0x0)
    Host disconnect detected
    Host disconnect detected
    Disconnect detected
    intr_usb 0x28, Disconnect Interrupt
    OMAPMHSUSBOTG::OTG_ConfigISR_stage2: Calling ReadULPIReg
    ResetEndPoints
    Session Request(0, 0)
    SoftResetMUSBController
    ***###StartUSBClock: EnableWakeupInterrupt(FALSE)
    +StartUSBClock11
    -StartUSBClock
    ResetEndPoints
    AbortQueue
    ResetEndPoints
    Disconnect with Sess = 0x90
    Disconnect with Pwr = 0x70
    Disconnect with connect_status=0x4
    WAIT_OBJECT_0 0x0 dwWaitRet : 0x0
    VBusDetectIST:USB Removed
    +AC_LINE_ONLINE
    BatteryChgCurThd WAIT_OBJECT_0 0x0 dwWaitRet : 0x0
    VUSB Removed
    OMAPMHSUSBVBUS::ThreadRun: USB removed 2
    OMAPMHSUSBVBUS::ThreadRun Calling Disconnect
    Device_Disconnect
    UsbFnMdd!UfnMdd_Notify: Ignoring notification 0x00000001 - 0x00000000 from PDD
    BatteryChgCurThd WAIT_OBJECT_0 0x0 dwWaitRet : 0x1
    USB OTG Disconnect 2
    USB Cable Disconnected
    OTG Interrupts(0x0) intr_tx(0x0) intr_rx(0x0)
    Interrupt0 Variable INTRUSB(0x0) Devctl(0x88)
    Interrupt Variable INTRUSB No interrupt at all
    Interrupt1 Variable INTRUSB(0x0), TX(0x0), RX(0x0), DevCtl(0x88), m_dwStatus(0x0)
    StopUSBClock with operateMode=0, m_dwStatus=0x0
    +(m_dwStatus & STATUS_WAIT_HOST_DISCONN_COMPLETE) == 0x00
    ResetEndPoints
    Calling Session Request3185
    Session Request(0, 0)
    +(m_timeout == DO_TRANSCEIVER_SUSPEND_TIMEOUT)
    +StopUSBClock
    +StopUSBClock
    OTG SysConfig = 0x5
    ***###StopUSBClock: EnableWakeupInterrupt(TRUE)
    -StopUSBClock

     ***********************************************************************************

      3.USB flash drive - As said earlier i am getting babble interrupt in all the boot up case.INTRUSB(0x4).

     

    Can you please suggest me how to solve this babble condition(for Flash drive) during boot?

  • WinCE is not supported on this forum, there is a dedicated forum for it: http://e2e.ti.com/support/embedded/wince/default.aspx. However, could you post the USB section of the schematic? Maybe there is a hardware issue.
  • Thanks.

    Please find the USB section.

  • Comments from the factory team below:
     
    For host mode, the cap should be >= 120uF. But 10uF or 4.7uF should only cause VBUSERROR, not babble. My guess would be that this babble is layout related...they went to extremes on ESD protection so I assume they have a very noisy environment to begin with. If they didn't do a good layout, all bets are off.
  • Hi Thanks for the reply.Is there any way that i can recover from this babble interrupt via software during boot up? Why i am asking,i have no issues during insertion cases(For Flash drive) .Also for keyboards,they are working well in both the boot up cases and insertion cases.

    Only issue is USB flash drive that too not working during the boot up.Any suggestion on software side to recover from this babble interrupt?? For example soft-reset the controller,SoftResetULPILink etc?? Is this will help ??

  • This should be a question to WinCE provider. But in theory the driver should be able to recover from babble condition by musb soft-reset, then re-initialization.

    Please note that WinCE is a third-party product, provided by Adeneo Embedded (http://www.adeneo-embedded.com). There is a separate support forum for it: http://e2e.ti.com/support/embedded/wince/default.aspx