Hello out there!
I have a problem regarding the OMAP L-137, USB0 controller behaviour during enumeration. (This is an own driver development, not regarding the DSP/BIOS.)
The USB0 controller is programmed as a USB-device. Test hardware is the Spectrum Digital EVM OMAP L-137. USB-host is a PC with MS Windows XP.
During enumeration, for an unknown reason, the enumeration process does not go further the SET_ADDRESS request. It looks like writing the received device-address to register FADDR has no effect.
Here is a typical log achieved from inside of my currently polled (interrupt-) service routine:
Time in sec USB Event
|---------------|-----------------------------------------------------
8.798 RESET
8.840 GET DEVICE DESCRIPTOR and send the 18 bytes requested (1)
8.840 STATUS STAGE interrupt
8.840 STATUS STAGE interrupt ---> Why a second STATUS STAGE interrupt? For what? (2)
8.842 RESET
8.870 SET ADDRESS (value=2)
8.870 STATUS STAGE interrupt
8.870 ADDRESS (value=2) is written to FADDR
8.903 GET DEVICE DESCRIPTOR and send the 18 bytes requested (1)
8.903 STATUS STAGE interrupt
9.283 RESET
9.323 GET DEVICE DESCRIPTOR and send the 18 bytes requested (1)
9.323 STATUS STAGE interrupt
9.323 STATUS STAGE interrupt ---> Why a second STATUS STAGE interrupt? For what? (2)
9.325 RESET
9.403 SET ADDRESS (value=2)
9.403 STATUS STAGE interrupt
9.403 ADDRESS (value=2) is written to FADDR
9.435 GET DEVICE DESCRIPTOR and send the 18 bytes requested (1)
9.436 STATUS STAGE interrupt
9.815 RESET
9.856 GET DEVICE DESCRIPTOR and send the 18 bytes requested (1)
9.856 STATUS STAGE interrupt
9.856 STATUS STAGE interrupt ---> Why a second STATUS STAGE interrupt? For what? (2)
9.858 RESET
9.936 SET ADDRESS (value=2)
9.936 STATUS STAGE interrupt
9.936 ADDRESS (value=2) is written to FADDR
9.969 GET DEVICE DESCRIPTOR and send the 18 bytes requested (1)
9.969 STATUS STAGE interrupt
10.349 SUSPEND (here Windows shows its error message)
(1 The descriptor data seems to be received properly by the host. This has been tested by sending a bogus descriptor instead, which was not accepted!
Also an eventual big/little-endian issue in the descriptor data has been tested without result.)
(2 STATUS STAGE interrupt is an EP0 interrupt with PERI_CSR0.RXPKTRDY == 0. EP0 interrupts with events other than SET_ADDRESS and GET DEVICE DESCRIPTOR would have run into a breakpoint!)
Someone can help me?