I'm running into an issue with an iMX25 where an interrupt endpoint (EP number 7) is intermittently missing the first data packet after resuming from suspend.
The iMX25 device is being placed into selective suspend and the user is resuming the device by sending a data packet from the host to the device. The host then sends 4 setup packets: clear feature remote wakeup, clear feature endpoint 4 halt, clear feature endpoint 2 halt, and clear feature endpoint 4 halt. Then the OUT data packet is transmitted to endpoint 7 usually within 1ms of the last setup packet.
The data packet to endpoint 7 is intermittently lost. When it's lost, the device never receives an interrupt with the ENDPTCOMPLETE bit set for endpoint 7. USB traces that show the data packet was ACK'd but the device never received the data. I can confirm that endpoint 7 is still primed to read. I do receive an interrupt saying the handshake for endpoint 0's setup packet has completed.
When the data is not lost, I receive an interrupt with both endpoint 0 and 7 complete. Other times the endpoint 0 complete interrupt fires 1 ms before the endpoint 7 interrupt.
Has anyone run into a similar situation before? Is there anything that needs to be done while coming out of suspend to ensure all interrupt endpoints work properly?