Tool/software:
Once the firmware puts the device into Hibernate, the device exits Hibernate after anywhere from 164 microseconds to 30 seconds. This occurs randomly, around 1 in 1000 times. When this occurs, PRCMSysResetCauseGet() returns PRCM_HIB_EXIT (7) and PRCMHibernateWakeupCauseGet() returns 0.
The firmware does this before entering Hibernate mode.
PRCMHibernateWakeUpGPIOSelect(PRCM_HIB_GPIO13 , PRCM_HIB_FALL_EDGE);
PRCMHibernateWakeUpGPIOSelect(PRCM_HIB_GPIO17 , PRCM_HIB_FALL_EDGE);
PRCMHibernateIntervalSet((32768 * 2));
PRCMHibernateWakeUpGPIOSelect(PRCM_HIB_GPIO11 , PRCM_HIB_FALL_EDGE);
PRCMHibernateWakeUpGPIOSelect(PRCM_HIB_GPIO4 , PRCM_HIB_FALL_EDGE);
PRCMHibernateWakeupSourceEnable(PRCM_HIB_GPIO4 | PRCM_HIB_GPIO13 | PRCM_HIB_GPIO17 | PRCM_HIB_GPIO11 | PRCM_HIB_SLOW_CLK_CTR);
uint32_t hibReg = HibRegRead();
Display_printf(gDisplayHandle, "HibReg %x Hibernate Now!\n", hibReg);
Display_printf(gDisplayHandle, 0, 0, "vvvvvvv");
PRCMHibernateEnter();
With this code we usually see the device exit Hibernate after 2 minutes, and PRCMSysResetCauseGet() returns PRCM_HIB_EXIT (7) and PRCMHibernateWakeupCauseGet() returns PRCM_HIB_WAKEUP_CAUSE_SLOW_CLOCK (2).
Do you have any ideas about how to fix/troubleshoot this issue?