I'm developing USB Hibernation feature on on of the platform which use Synopsis DWC3 USB controller. When USB alone resumes from suspend state there is no issue.
But I'm facing an issue while my device is resuming from deep sleep. While resuming the Link state comes as 4 (Disconnected) which leads to USB re-enumeration.
From hardware team there is a query regarding this issue which i'm not able to understand. Please see below,
In deep sleep we observed:
- a micro-frame peak signal amplitude much grater than expected (almost the double);
- an undesired zero-level offset before the micro-frame.
These misbehaviors matches the hypothesis of a missing Single-Ended 0 (SE0) termination on one of the stream facing ends. Since the host is the Suspend/Resume master that works correctly with any other USB 2.0 device, we should suppose that device end misses its High Speed (HS) 45 ohm (namely) termination connection at end of Resume phase.
By specification device must connect HS termination within 1.33 us since Resume end (USB D- falling edge), so this is normally done by the USB 2.0 PHY hardware ready to react in advance since Resume state started. We observed that the device detects Resume state start correctly, by increasing power consumption in few milliseconds, indicating a prompt reaction to exit deep sleep state. Resume will last not less than 20 ms that is largely enough to prepare USB 2.0 PHY to be ready to answer to Resume end detection and relevant SE0 termination required by HS communication link.
If device SE0 misses, then the host-monitored increased signal amplitude occurring at first micro-frame causes the host to enter an High-Speed Disconnect state, followed by USB reset, FS to HS negotiation, re-enumeration, etc.
Could anybody explain what is the above query?