In our custom board, we have one USB port (usbotg3 in dts) which is Directly connected to LTE module. CDNS host controller used.
Below are the test scenario followed for system wakeup using USB test
1.Make USB (Directly connected to LTE module.CDNS host controller used) as Wake source.
2.Suspend the device using mem command
3.Send SMS to the SIM mounted on LTE module.
4.System is not waking up.
5.Wakeup the system using serial
6.Suspend the device using mem command (without rebooting the board)
7.Send SMS to the SIM mounted on LTE module.
8.System is waking up
From above test scenario we are able to conclude that system wakeup is happening using USB as wakeup source only in the second suspend - resume attempt.
After digging into the cdns driver code, I got hint that when I am giving first time suspend, cdns3_irq function is getting called and it is executing the code which is inside the cdns->in_lpm check. For second suspend (without rebooting the board) it is not going inside the cdns3_irq function when i give suspend command and when SMS comes system is able to wake up and I am able to see the cdns3_irq function getting called in resume time.
Please provide some input