CYPD3177: Sleep and Deep Sleep mode - KBA236276
The system goes into Deep Sleep when all peripherals are idle and can enter Deep Sleep. So, typically events/factors/external don’t drive the system to go to Deep Sleep. Instead, events/factors wake the device from Deep Sleep. After waking up, the device has to handle the request before going to Deep Sleep.
The time taken will depend on the task. If this is a detach/attach event, then there are many tasks before we can enter Deep Sleep. We cannot go into Deep Sleep mode if the USB is active.
The CYPD3177 is a fixed firmware part. We don't have APIs that can be used to modify/enter the device into Deep Sleep modes.
But this implementation can be seen in CCG3PA.
In the CCG3PA sample firmware, the system_sleep () function is always called in the while loop of main.c, and it is checked in this function whether all the application layer, HPI, and DPM modules are in Sleep mode.
Note: CCG will only enter Sleep mode when all the above are idle. If the PD state machine is also idle, it enters Deep Sleep mode.
This implementation is in the system_sleep () function of app.c.
The CCG3 Deep Sleep can be enabled/disabled using SYS_DEEPSLEEP_ENABLE in the firmware.