usb: dwc3: Add support to LPM L1 remote wakeup for ep0 endpoints

When device controller gets an LPM request from the host during a
control transfer, it is not able to initiate remote wakeup
automatically. As a result it accepts the request, goes to L1 state,
and does not initiate wakeup to exit L1 state. Since host expects
the device to do a remote wakeup from L1 state and the device does
not initiate the wakeup, the host continues to wait and starts
enumeration again because control transfer timeout occurs. Fix this
issue by initiating remote wakeup before queuing the ep0 request
if bus is in L1 suspend state. Also add a counter which gets
incremented upon device sending remote wakeup before queuing ep0
request.

Change-Id: I307ad94d4cb40ce2bd85425f3a1c6316cded52b8
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
5 files changed