SW is reporting an EHCI lockup event where the PORTSC_I register bit 8 shows the port is in reset and will not come out. Here is the dump from our SW guy...
OK, I found the lockup. It is in USB EHCI controller at address 0x4806 4858.
The current register setting is shown highlighted in yellow below
___address____|________0________4________8________C_0123456789ABCDEF
NSD:48064830| 00000000 00000000 00000000 00000000 ................
NSD:48064840| 00000000 00000000 00000000 00000000 ................
NSD:48064850| 00000001 00001000 00001105 00001000 ................
NSD:48064860| 00000000 00000000 00000000 00000000 ................
NSD:48064870| 00000000 00000000 00000000 00000000 ................
NSD:48064880| 00000000 00000000 00000000 00000000 ................
NSD:48064890| 00000000 00200040 00000080 00000001 ....@. .........
The code that tests the problem bit is in yellow below. FYI – this is the HCC Stack code, not the application code
_addr/line__|code_____|label___________________|mnemonic________________|comment
NSR:80027214|E3A02C01 mov r2,#0x100
NSR:80027218|E1A01007 cpy r1,r7
NSR:8002721C|E1A00008 cpy r0,r8
NSR:80027220|EBFFFFC2 bl 0x80027130 ; _ehci_set_portsc_bit
135| oal_task_sleep( 50 ); /* wait 50ms for the completion of the rese
NSR:80027224|E3A00032 mov r0,#0x32
NSR:80027228|EB00DC95 bl 0x8005E484 ; oal_task_sleep
136| _ehci_clear_portsc_bit( unit, port, PR ); /* clear reset - required in some systems
NSR:8002722C|E3A02C01 mov r2,#0x100
NSR:80027230|E1A01007 cpy r1,r7
NSR:80027234|E1A00008 cpy r0,r8
NSR:80027238|EBFFFFB5 bl 0x80027114 ; _ehci_clear_portsc_bit
|
| /* wait reset to complete */
| do
| {
141| rc = ehci_hc_state( unit );
NSR:8002723C|E1A00008___________________________cpy_____r0,r8
NSR:80027240|EBFFF9FF bl 0x80025A44 ; ehci_hc_state
NSR:80027244|E1B04000 movs r4,r0
| }
143| while ( rc == USBH_SUCCESS && _ehci_gb32_reg( PORTSC( port ), PR ) );
NSR:80027248|1A000010 bne 0x80027290
NSR:8002724C|E5950850 ldr r0,[r5,#0x850]
NSR:80027250|E3100C01 tst r0,#0x100 this line of code is testing bit 8 of the USB portsc_i register
NSR:80027254|1AFFFFF8 bne 0x8002723C
| }
And I finally took screen shots from the reference manual showing the port is in reset as per the register setting (see bit 8 below). Just a bit of info, when we originally put this USB stuff together this was due to the ULPI/PHY not behaving. I do not know if that is the problem today as it could also be the different HUB that has been used. I tried terminating the reset by writing a zero but the reset does not clear.
The screenshot will not copy into here, but it's just the register description from the reference manual. The PHY we are using is the USB3320 and the Hub is the USB2512 both from SMSC.
We have come to the point where help is needed. I have looked for HW issues with no luck so far. It seems to be internal to the 3703 but of course could still be hardware. Can someone help?