Hi,
We've created a board with OMAP 3530 (3730 in next revision) processor and the TPS65930 chip. We use WinCE 6.0 (we plan to move to 7.0), and all the drivers in BSP is prepared for TPS6550, which is on the EVM board. They should be compatible, but we have some problems with the USB OTG port connected to the TPS65930 chip. We'd like to use it as a second USB port and connect some devices to it, but it doesn't work at all. We ground the ID pin, to make sure it works in a proper mode (actually we tried it with the ID pin grounded by the Mini A type USB cable, and also with the ground on the board, and nothing worked).
Theoretically there should be no difference between TPS65930 and TPS65950, so it should work fine with the attached driver… But, the EVM board is not using the OTG port from the TPS chip, just the ISP5107 one.
Is there anything we should do to make the USB OTG working? So far we didn't change anything in the BSP.
Please, let me know.
Best regards,
Zack
I've tested the singnals on the USB data lines, and there is nothing. No data during power on, no data during plugging the devices in. And it doesn't matter what speed the device is. Also, Ive tested all the configurations of the ID pin.
After checking the data lines on scope - there is nothing.
Please, let me know if you have any ideas.
And one more thing - we use the TPS chip for powering the processor, and also for audio (thank you Tao for your help with that), so it is functional.
Thank you!
Are you monitoring the ULPI signals or external signals (DM / DP)? If you search the forums you can see there are customers using TPS65930 with our BSP - so TPS should not be an issue. Pl. make sure all Phy initialization is happening and also dump out ULPI registers from TPS
Atul
Hi Atul,
Thank you very much for your response.
I am monitoring the external signals - DM/DP. I don't have an access to the ULPI ones (they are in the middle layer of the board).
Here is my USB OTG initialization output:
21470 PID:400002 TID:e50002 OTG Charger Event(vbus.power.event) 21470 PID:400002 TID:e50002 Battery Charger Event Create 21470 PID:400002 TID:e50002 HSUSBOTGTransceiver get called 21470 PID:400002 TID:e50002 +TWL_FUNC_CTRL=0x0 21471 PID:400002 TID:e50002 +TWL_IFC_CTRL=0x0 21471 PID:400002 TID:e50002 +TWL_OTG_CTRL=0x0 21471 PID:400002 TID:e50002 +TWL_OTHER_FUNC_CTRL=0x0 21471 PID:400002 TID:e50002 +TWL_OTHER_INT_STS=0x0 21471 PID:400002 TID:e50002 +TWL_PHY_PWR_CTRL=0x0 21472 PID:400002 TID:e50002 +TWL_PHY_CLK_CTRL=0x2 21472 PID:400002 TID:e50002 +TWL_VUSB3V1_REMAP=0xee 21472 PID:400002 TID:e50002 +TWL_VUSB1V5_REMAP=0xee 21472 PID:400002 TID:e50002 +TWL_VUSB1V8_REMAP=0xee 21472 PID:400002 TID:e50002 HSUSBOTGTransceiver: CARKIT_Reg(0x0), IFC_CTRL_Reg(0x0) 21473 PID:400002 TID:e50002 HSUSBOTGTransceiver: TWL_USB_INT_EN_RISE(0x0), TWL_USB_INT_EN_FALL(0x0) 21595 PID:400002 TID:e50002 HSUSBOTGTransceiver: CARKIT_Reg(0x0), IFC_CTRL_Reg(0x0) 21596 PID:400002 TID:e50002 HSUSBOTGTransceiver: TWL_USB_INT_EN_RISE(0x0), TWL_USB_INT_EN_FALL(0x0) 21596 PID:400002 TID:e50002 HSUSBOTGTransceiver:Configure success 21609 PID:400002 TID:e50002 AttachProc with 4 parameters 21615 PID:400002 TID:e50002 HS configuration: 21616 PID:400002 TID:e50002 interface: 0 EP:01 direction:IN maxPacketSize:512 Attributes:0x2 21616 PID:400002 TID:e50002 interface: 0 EP:02 direction:OUT maxPacketSize:512 Attributes:0x2 21616 PID:400002 TID:e50002 FS configuration: 21616 PID:400002 TID:e50002 interface: 0 EP:01 direction:IN maxPacketSize:64 Attributes:0x2 21616 PID:400002 TID:e50002 interface: 0 EP:02 direction:OUT maxPacketSize:64 Attributes:0x2 21616 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (0) 21616 PID:400002 TID:e50002 Control endpoint 21616 PID:400002 TID:e50002 RxFIFOsz=0 21616 PID:400002 TID:e50002 RxFIFOadd=0 21616 PID:400002 TID:e50002 TxFIFOsz=0 21616 PID:400002 TID:e50002 TxFIFOadd=0 21616 PID:400002 TID:e50002 Unsupported endpoint Transfer type 21616 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1) 21616 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (0) 21617 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1) 21617 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (0) 21627 PID:400002 TID:e50002 IsSE0 called with line state = 0x0 21627 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1) 21642 PID:400002 TID:e50002 IsSE0 returning 1 21657 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (0) 21657 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1) 21657 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (0) 21658 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1) 21658 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (0) 21658 PID:400002 TID:e50002 IsSE0 called with line state = 0x0 21659 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
Later, after running the OS, I can see two lines that are printed out once a while in a debug output:
108408 PID:400002 TID:4850002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)108408 PID:400002 TID:4850002 HSUSBOTGTransceiver::IsADeviceConnected : TRUE
And it doesn't matter if something is connected to the USB OTG port, or not. Actually, we'd like to use it as a host, so the current settings are wrong (especially that nothing is connected there). I think the connected device type should be "B" (I've corrected the debug output from the function "BOOL HSUSBOTGTransceiverTps659xx::IsBDeviceConnected()" to return "HSUSBOTGTransceiver::IsBDeviceConnected : TRUE\r\n", before it returned also type "A"). Please, correct me if I'm wrong.
Here is the ULPI registers' dump:
218561 PID:400002 TID:53d002e Power = 0x60 218561 PID:400002 TID:53d002e Dump ULPI Reg 218561 PID:400002 TID:53d002e ULPIVBusControl = 0x0 218561 PID:400002 TID:53d002e ULPICarKitControl = 0x0 218561 PID:400002 TID:53d002e ULPIIntMask = 0x0 218561 PID:400002 TID:53d002e ULPIIntSrc = 0x0 218561 PID:400002 TID:53d002e ULPIRawData = 0x0 218561 PID:400002 TID:53d002e TPS659XX ULPI Register 218562 PID:400002 TID:53d002e ULPI_VID=(0,0) 218562 PID:400002 TID:53d002e ULPI_PID=(0,0) 218562 PID:400002 TID:53d002e Function Control=0 218562 PID:400002 TID:53d002e Interface Control=0 218563 PID:400002 TID:53d002e OTG Control(0)=53d002f 218563 PID:400002 TID:53d002e Interrupt Enable rising=0 218563 PID:400002 TID:53d002e Interrupt Enable Falling=0 218563 PID:400002 TID:53d002e Interrupt Status=0 218563 PID:400002 TID:53d002e Interrupt Latch=0 218563 PID:400002 TID:53d002e Debug=0 218583 PID:400002 TID:53d002e Scratch=0 218583 PID:400002 TID:53d002e Power=0
Please, let me know if you have any thoughts on this.
Thank you!!
Best Regards,
These registers do not look correct - seems like everything in TPS is just set to default power on values. Most likely nothing is going over I2C when your driver is initializing TPS configuration.
Atul,
Thank you for your response. I’ve captured the I2C communication between the processor and the TPS chipset (I’ve captured only the address 0x48, which is the USB) on startup of the OS:
I2C Packet
Addr
R/W
Addr Ack
Register Address
Data
Register Name
Comment
Start 7-bit Addr
48
Write
Ack
14
USB_INT_LATCH
We try to write to address, which is Read Only, so there is no ACK
8d
OTHER_INT_LATCH
21
CARKIT_INT_LATCH
9b
CARKIT_SM_1_INT_LATCH
a0
CARKIT_SM_2_INT_LATCH
b5
REG_CTRL_ERROR
12
FF
USB_INT_EN_FALL_CLR
Correct Write
0f
USB_INT_EN_RISE_CLR
88
OTHER_INT_EN_RISE_CLR
8b
OTHER_INT_EN_FALL_CLR
1f
CARKIT_INT_EN_CLR
99
CARKIT_SM_1_INT_EN_CLR
9e
CARKIT_SM_2_INT_EN_CLR
b4
REG_CTRL_EN_CLR
ff
PHY_CLK_CTRL_STS
fe
PHY_CLK_CTRL
We try to write to address, which is NOT Read Only, but there is no ACK (I don't know why it's not accepted)
3
We try to write to address, which is NOT Read Only, but there is no ACK
The last section (ff, fe and fe) is repeated many times – until the OS is started.
So it looks like we have many unsuccessful write attempts. I’m still analyzing it all – to see if this is something we should expect (at least the correct writes), and what’s the problem here – why we try to write to read-only registers.
Also, maybe there are some communication problems, and the addresses should be different.
Please, let me know if you know what can be wrong here. Thank you! Zack
Please, let me know if you know what can be wrong here.
My table was cut, so I'm posting its right side again:
Here is an update on this issue:
In data I’ve captured I can see some patterns, based on which I assume that we call the following functions: “InitializeInterrupts” (C:\WINCE600\PLATFORM\COMMON\SRC\SOC\COMMON_TI_V1\TPS659XX\DRIVER\tps659xx.cpp) and “HSUSBOTGTransceiverTps659xx::Configure()” (C:\WINCE600\PLATFORM\COMMON\SRC\SOC\COMMON_TI_V1\TPS659XX\USBOTG\ tps659xx_musb.cpp).
'The data doesn’t match completely with code in these functions – some data is missing, and some reads were interpreted as writes (for all the read-only registers).
For the Configure function loop – we can see that reading from the I2C is not successful, because they are interpreted by chip as writes. That’s why it continues – probably 500 times.
Anyway, we can see that the I2C data is not being transmitted correctly. I need to measure the signals again, and put more attention to capturing the analog signals this time.
Here is my update on this issue:
So, after the hardware modifications, our debug output looks like this:
29852 PID:400002 TID:e50002 HSUSBOTGTransceiver get called
29853 PID:400002 TID:e50002 +TWL_FUNC_CTRL=0x49
29853 PID:400002 TID:e50002 +TWL_IFC_CTRL=0x18
29853 PID:400002 TID:e50002 +TWL_OTG_CTRL=0x6
29853 PID:400002 TID:e50002 +TWL_OTHER_FUNC_CTRL=0x0
29853 PID:400002 TID:e50002 +TWL_OTHER_INT_STS=0x22
29854 PID:400002 TID:e50002 +TWL_PHY_PWR_CTRL=0x0
29854 PID:400002 TID:e50002 +TWL_PHY_CLK_CTRL=0x2
29854 PID:400002 TID:e50002 +TWL_VUSB3V1_REMAP=0xee
29854 PID:400002 TID:e50002 +TWL_VUSB1V5_REMAP=0xee
29854 PID:400002 TID:e50002 +TWL_VUSB1V8_REMAP=0xee
29854 PID:400002 TID:e50002 HSUSBOTGTransceiver: CARKIT_Reg(0x0), IFC_CTRL_Reg(0x18)
29855 PID:400002 TID:e50002 HSUSBOTGTransceiver: TWL_USB_INT_EN_RISE(0x0), TWL_USB_INT_EN_FALL(0x0)
29855 PID:400002 TID:e50002 HSUSBOTGTransceiver: CARKIT_Reg(0x0), IFC_CTRL_Reg(0x18)
29856 PID:400002 TID:e50002 HSUSBOTGTransceiver: TWL_USB_INT_EN_RISE(0x1f), TWL_USB_INT_EN_FALL(0x1f)
29856 PID:400002 TID:e50002 HSUSBOTGTransceiver:Configure success
29875 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (0)
29875 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
29876 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (0)
29876 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
29876 PID:400002 TID:e50002 IsSE0 called with line state = 0x0
29883 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
29898 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (0)
29911 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
29911 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (0)
29912 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
29912 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (0)
29912 PID:400002 TID:e50002 IsSE0 called with line state = 0x0
29913 PID:400002 TID:e50002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
…
39361 PID:400002 TID:4850002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (0)
39363 PID:400002 TID:4850002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
39364 PID:400002 TID:4850002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (0)
39364 PID:400002 TID:4850002 IsSE0 called with line state = 0x1
39365 PID:400002 TID:4850002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
39365 PID:400002 TID:4850002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (0)
39365 PID:400002 TID:4850002 +TWL_FUNC_CTRL=0x41
39366 PID:400002 TID:4850002 +TWL_IFC_CTRL=0x18
39366 PID:400002 TID:4850002 +TWL_OTG_CTRL=0x7
39366 PID:400002 TID:4850002 +TWL_OTHER_FUNC_CTRL=0x0
39366 PID:400002 TID:4850002 +TWL_OTHER_INT_STS=0x82
39366 PID:400002 TID:4850002 +TWL_PHY_PWR_CTRL=0x0
39366 PID:400002 TID:4850002 +TWL_PHY_CLK_CTRL=0x2
39367 PID:400002 TID:4850002 +TWL_VUSB3V1_REMAP=0xee
39367 PID:400002 TID:4850002 +TWL_VUSB1V5_REMAP=0xee
39367 PID:400002 TID:4850002 +TWL_VUSB1V8_REMAP=0xee
39418 PID:400002 TID:44a0002 DriverShell: DllEntry
39419 PID:400002 TID:4900002 HSUSBOTGTransceiverTriton2::AconnNotifHandle (0x4920003)
And the ULPI registers:
538923 PID:400002 TID:7de000a TPS659XX ULPI Register
538923 PID:400002 TID:7de000a ULPI_VID=(51,4)
538923 PID:400002 TID:7de000a ULPI_PID=(2,c0)
538923 PID:400002 TID:7de000a Function Control=45
538924 PID:400002 TID:7de000a Interface Control=18
538924 PID:400002 TID:7de000a OTG Control(26)=7de000b
538924 PID:400002 TID:7de000a Interrupt Enable rising=1f
538924 PID:400002 TID:7de000a Interrupt Enable Falling=1f
538924 PID:400002 TID:7de000a Interrupt Status=7
538924 PID:400002 TID:7de000a Interrupt Latch=7
538925 PID:400002 TID:7de000a Debug=4
538925 PID:400002 TID:7de000a Scratch=0
538925 PID:400002 TID:7de000a Power=20
But the devices are still not enumerated.
Here is what we can see on the USB OTG after connection of a single device. It is very similar for any types of the devices (in this case this is an USB SD card reader).
# Index
m:s.ms.us.ns
Dur
Len
Err
Dev
Ep
Level
Record
0
0:00.000.000.000
Capture started
[06/07/2011 11:48:58]
1
0:00.000.000.150
Bus event
<Host disconnected>
2
0:02.274.974.966
<Host connected>
0:02.280.500.516
49.933 us
<Reset> / <Chirp J> / <Tiny J>
4
0:02.280.550.450
19.066 us
<Reset> / <Target disconnected>
5
0:02.280.569.516
48.964.916 ms
<Reset> / <Chirp K> / <Tiny K>
6
0:02.329.534.433
<Full-speed>
7
0:02.332.534.433
411.239.433 ms
T
<Suspend>
8
0:03.843.436.033
1.320.583 ms
9
0:03.844.756.616
39.283 us
10
0:03.844.795.900
<Low-speed>
11
0:03.846.813.683
U
0:03.847.174.850
616 ns
13
0:03.847.175.466
164.720.000 ms
0:05.547.370.450
15
0:05.550.370.450
411.221.016 ms
16
0:06.609.774.633
1.403.733 ms
17
0:06.611.178.366
2.055.116 ms
<Chirp K>
18
0:06.613.233.483
17.152.333 ms
19
0:06.630.385.816
20
0:06.633.385.816
411.734.183 ms
0:24.554.154.666
Capture stopped
[06/07/2011 11:49:23]
Thanks a lot!
These registers in xrcvr look fine - can you enable traces in OTG driver to see what is happening? Seems like xrcvr is indicating interrupts but nothing is happening. Also pl. make sure USB OTG pads are configured properly in your BSP.
One other suggestion is to try TI BSP (after recompiling it for TPS Phy) and comparing your traces against what you get on EVM. I am not sure whether or not enumeration will work all the way but at least it may point us in the right direction
thanks
Thank you for your response. First, I’d like to provide you some status update. I am able to use a Low Speed devices (mouse or keyboard) using the USB OTG port, however… only on startup of the OS. When I unplug the device, and plug it back in, it is not enumerated. When I unplug it, all the uninitialization (see the debug output below) is done, however, when I plug it back in – there is no event, and device is not detected.
Also, none of the faster devices are detected, even on startup of the OS.
This is what I can see in the debug output window after unplugging the working LS device (mouse):
145369 PID:400002 TID:4740002 OTG Interrupts(0x28) intr_tx(0x0) intr_rx(0x0)
145369 PID:400002 TID:4740002 Interrupt Variable INTRUSB(0x28) Devctl(0x19)
145369 PID:400002 TID:4740002 Interrupt Variable INTRUSB(0x28), TX(0x0), RX(0x0), DevCtl(0x19), m_dwStatus(0x0)
145369 PID:400002 TID:4740002 OMAPMHSUSBOTG::OTG_ConfigISR_stage2
145369 PID:400002 TID:4740002 Host disconnect detected
145369 PID:400002 TID:4740002 Disconnect detected
145369 PID:400002 TID:4740002 ResetEndPoints
145369 PID:400002 TID:4f60002 CRootHub::WaitForPortStatusChange::NoOfPort(0x1)
145369 PID:400002 TID:4f60002 CHW::DidPortStatusChange for port 1
145369 PID:400002 TID:4f60002 CHW::B4 Power = 0x60
145369 PID:400002 TID:4f60002 ResetAndEnablePort(1)
145369 PID:400002 TID:4740002 Host_Disconnect
145369 PID:400002 TID:4740002 Session Request(0, 0)
145369 PID:400002 TID:4740002 SoftResetMUSBController
145369 PID:400002 TID:4740002 ***###StartUSBClock: EnableWakeupInterrupt(FALSE)
145369 PID:400002 TID:4740002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (0)
145369 PID:400002 TID:4740002 +StartUSBClock
145369 PID:400002 TID:4740002 -StartUSBClock
145378 PID:400002 TID:4740002 ResetEndPoints
145431 PID:400002 TID:4f60002 CHW::DidPortStatusChange: After reset
145431 PID:400002 TID:4f60002 CHW::Power = 0x30
145431 PID:400002 TID:4f60002 CHW::DevCtl = 0x98
145431 PID:400002 TID:4f60002 CHW::PortSpeed = HS
145431 PID:400002 TID:4f60002 Connect Status = 0x2
145431 PID:400002 TID:4f60002 +CRootHub::GetStatus - port = 1
145431 PID:400002 TID:4f60002 MUSB: -CRootHub::GetStatus - port = 1, returing BOOL 1
145431 PID:400002 TID:4f60002 GetStatus return 1
145431 PID:400002 TID:4f60002 MUSB: +CRootHub::SetOrClearFeature - port = 1, set/clear = 0x1, feature = 0x10
145431 PID:400002 TID:4f60002 SetOrClearFeature(0x1), feature(0x10), port(1)
145431 PID:400002 TID:4f60002 CLEAR: USB_HUB_FEATURE_C_PORT_CONNECTION
145431 PID:400002 TID:4f60002 MUSB: CRootHub::SetOrClearFeature - port = 1, set/clear = 0x1, feature = 0x10, FAILED
145431 PID:400002 TID:4f60002 -CRootHub::SetOrClearFeature - port = 1, set/clear = 0x1, feature = 0x10, returing BOOL 1
145431 PID:400002 TID:4f60002 MUSB: -CRootHub::WaitForPortStatusChange, rPort = 1, fSuccess = 1
145431 PID:400002 TID:4f60002 MUSB: CHub(Root tier 0)::HubStatusChangeThread - port 1, change = 0x0001, status = 0x0502
145432 PID:400002 TID:4f60002 MUSB: CHub(Root tier 0)::HubStatusChangeThread - device detached on port 1
145432 PID:400002 TID:4f60002 MUSB: +CHub(Root tier 0)::DetachDevice - port = 1
145440 PID:400002 TID:4f60002 MUSB: CHub(Root tier 0)::DetachDevice - reading NULL device detached on port 1, doing nothing.
145441 PID:400002 TID:4f60002 MUSB: CHub(Root tier 0)::DetachDevice - created worker thread to handle device detach
145442 PID:400002 TID:36100a2 MUSB: +CHub::DetachDownstreamDeviceThread
145442 PID:400002 TID:36100a2 MUSB: +CFunction(tier 1)::HandleDetach
145442 PID:400002 TID:36100a2 HandleDetach close pipe 0
145442 PID:400002 TID:36100a2 RemoveFromBusyPipeList found the device
145442 PID:400002 TID:36100a2 RemoveBusyPipeList for EP 0 -clear
145442 PID:400002 TID:36100a2 RemoveBusyPipeList clean EP 0
145442 PID:400002 TID:4ed0002 CBusyPipeL ist::Total no of event = 3
145442 PID:400002 TID:36100a2 Warning! Not able to find EP 0,DevAddr 1
145443 PID:400002 TID:36100a2 RemoveBusyPipeList clean EP 0
145443 PID:400002 TID:4ed0002 CBusyPipeL ist::Total no of event = 3
145443 PID:400002 TID:36100a2 HandleDetach close pipe 1
145443 PID:400002 TID:36100a2 ReleasePhysicalEndPoint for EP 0x81 Device 0x1 -> Mapped 1 [IN]
145443 PID:400002 TID:36100a2 RemoveFromBusyPipeList: Release all
145443 PID:400002 TID:4ed0002 CBusyPipeL ist::Total no of event = 1
145442 PID:400002 TID:4f60002 MUSB: +CRootHub::DisablePort - port = 1
145446 PID:400002 TID:36100a2 GetCurrentToggle bit for mapped EP 15 (IN) = DataToggle (0x0)
145472 PID:400002 TID:36100a2 AbortQueue
145443 PID:400002 TID:4f60002 MUSB: -CRootHub::DisablePort - port = 1
145478 PID:400002 TID:36100a2 GetCurrentToggle bit for mapped EP 15 (IN) = DataToggle (0x0)
145503 PID:400002 TID:36100a2 RemoveFromBusyPipeList: Release all
145503 PID:400002 TID:4ed0002 CBusyPipeL ist::Total no of event = 1
145503 PID:400002 TID:36100a2 +CHub(Root tier 0)::ClosePipe - address = 1, pipeIndex = 0
145503 PID:400002 TID:36100a2 MUSB: -CHub(Root tier 0)::ClosePipe - address = 1, pipeIndex = 0, returing HCD_REQUEST_STATUS 2
145503 PID:400002 TID:36100a2 +CHub(Root tier 0)::ClosePipe - address = 1, pipeIndex = 1
145504 PID:400002 TID:36100a2 MUSB: -CHub(Root tier 0)::ClosePipe - address = 1, pipeIndex = 1, returing HCD_REQUEST_STATUS 2
145472 PID:400002 TID:4f60002 MUSB: -CHub(Root tier 0)::DetachDevice - port = 1
145479 PID:400002 TID:4740002 ResetEndPoints
145515 PID:400002 TID:4740002 Disconnect with Sess = 0x98
145515 PID:400002 TID:4740002 Disconnect with Pwr = 0x70
145515 PID:400002 TID:4740002 Disconnect with connect_status=0x0
145531 PID:400002 TID:36100a2 MUSB: -CFunction(tier 1)::HandleDetach
145531 PID:400002 TID:36100a2 MUSB: +CFunction(tier 1)::~CFunction
145531 PID:400002 TID:36100a2 MUSB: -CFunction(tier 1)::~CFunction
145531 PID:400002 TID:36100a2 MUSB: +CDevice::~CDevice
145531 PID:400002 TID:36100a2 MUSB: +CDevice::DeleteUsbConfigurationStructure
145531 PID:400002 TID:36100a2 MUSB: -CDevice::DeleteUsbConfigurationStructure
145531 PID:400002 TID:36100a2 MUSB: +CDeviceGlobal::FreeAddress - address = 1
145531 PID:400002 TID:36100a2 MUSB: -CDevice::FreeAddress - address = 1
145531 PID:400002 TID:36100a2 MUSB: -CDevice::~CDevice
145531 PID:400002 TID:36100a2 MUSB: -CHub::DetachDownstreamDeviceThread
145605 PID:400002 TID:4f60002 +CRootHub::GetStatus - port = 1
145605 PID:400002 TID:4f60002 MUSB: -CRootHub::GetStatus - port = 1, returing BOOL 1
145605 PID:400002 TID:4f60002 CHub::ResetAndEnablePort
145605 PID:400002 TID:4f60002 +CRootHub::WaitForPortStatusChange
146106 PID:400002 TID:4f60002 RootHUB:NoOfPort = 1
146106 PID:400002 TID:4f60002 RootHUB:Port[0] = 0x0
146106 PID:400002 TID:4f60002 Signal Disconnect Complete
146106 PID:400002 TID:4740002 OTG Interrupts(0x0) intr_tx(0x0) intr_rx(0x0)
146106 PID:400002 TID:4740002 Interrupt Variable INTRUSB(0x0) Devctl(0x98)
146106 PID:400002 TID:4740002 Interrupt Variable INTRUSB No interrupt at all
146106 PID:400002 TID:4740002 Interrupt Variable INTRUSB(0x0), TX(0x0), RX(0x0), DevCtl(0x98), m_dwStatus(0x0)
147107 PID:400002 TID:4740002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
147107 PID:400002 TID:4740002 StopUSBClock with operateMode=0, m_dwStatus=0x0
147107 PID:400002 TID:4740002 +(m_dwStatus & STATUS_WAIT_HOST_DISCONN_COMPLETE) == 0x00
147107 PID:400002 TID:4740002 ResetEndPoints
147108 PID:400002 TID:4740002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
150124 PID:400002 TID:4740002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
150124 PID:400002 TID:4740002 HSUSBOTGTransceiver::IsADeviceConnected : TRUE
154142 PID:400002 TID:4740002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
154142 PID:400002 TID:4740002 HSUSBOTGTransceiver::IsADeviceConnected : TRUE
157159 PID:400002 TID:4740002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
157159 PID:400002 TID:4740002 HSUSBOTGTransceiver::IsADeviceConnected : TRUE
160176 PID:400002 TID:4740002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
160176 PID:400002 TID:4740002 HSUSBOTGTransceiver::IsADeviceConnected : TRUE
163193 PID:400002 TID:4740002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
163193 PID:400002 TID:4740002 HSUSBOTGTransceiver::IsADeviceConnected : TRUE
166210 PID:400002 TID:4740002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
166210 PID:400002 TID:4740002 HSUSBOTGTransceiver::IsADeviceConnected : TRUE
169227 PID:400002 TID:4740002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
169227 PID:400002 TID:4740002 HSUSBOTGTransceiver::IsADeviceConnected : TRUE
172244 PID:400002 TID:4740002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
172244 PID:400002 TID:4740002 HSUSBOTGTransceiver::IsADeviceConnected : TRUE
175261 PID:400002 TID:4740002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
175261 PID:400002 TID:4740002 HSUSBOTGTransceiver::IsADeviceConnected : TRUE
178278 PID:400002 TID:4740002 HSUSBOTGTransceiverTriton2::EnableWakeupInterrupt (1)
178278 PID:400002 TID:4740002 HSUSBOTGTransceiver::IsADeviceConnected : TRUE
Plugging mouse back in doesn’t give any output.
The above debug output was generated after build BSP with KITL and defining DEBUGMSG as RETAILMSG in the following files:
C:\WINCE600\PLATFORM\COMMON\SRC\SOC\COMMON_TI_V1\OMAP3530\MUSB\MUSBHCD\MUSBMHDRC\chw.cpp
C:\WINCE600\PLATFORM\COMMON\SRC\SOC\COMMON_TI_V1\OMAP3530\MUSB\MUSBHCD\USB2COM\cdevice.cpp
C:\WINCE600\PLATFORM\COMMON\SRC\SOC\COMMON_TI_V1\OMAP3530\MUSB\MUSBOTG\otg.cpp
C:\WINCE600\PLATFORM\COMMON\SRC\SOC\COMMON_TI_V1\TPS659XX\USBOTG\tps659xx_musb.cpp
Also, I’ve tried both approaches:
Nothing helped – I still have popping up information that the A device is connected.
Please, let me know if you have any idea what can be wrong here. I can put some additional debug traces in some places and see if the registers of the TPS chipset are updated after inserting the USB device. Could you point me to the best place to check that?
Also, do you know why any faster devices are not enumerated at all?
The EVM board uses a different driver – the ISP one, but there is also common code, so I can compare the traces too.
When you connect FS/HS devices, do you see any trace in driver / phy? If not, I would recommend checking your schematics/hardware - especially the pulldown resistors on D+/D- lines.
Regarding reconnect issue, it will be helpful to compare your traces against EVM. You can also recompile TI BSP to use TPS Phy instead of ISP and record traces.
Hello Zack,
How did this turn out? Were you able to discover the root cause? Was it hardware or software?
Dave
Hello Dave,
No, this is still an open issue. Because of changes in my priorities right now this task is on hold. We use only the EHCI USB port for now. I should return to this later this year.
So I don't have any news for you, sorry.
I'm working on this task again.
You were right - changing the pulldown resistors on D+ and D- helped - (the internal ones) I can connect the FS devices to this USB port now (thank you!), however I still cannot reconnect.
For the FS devices - only the FS devices are enumerated now. HS and LS are not working. But I think this is OK for now, since in our case the targeted device on this port is the FS one.
The reconnection issue is more important.
I'll let you know if I have any progress on that.
Thank you,