soc: RT600: Add support for suspend-to-idle power state

Call SoC Deep Sleep mode

Signed-off-by: Mahesh Mahadevan <mahesh.mahadevan@nxp.com>
This commit is contained in:
Mahesh Mahadevan 2021-03-26 12:13:43 -05:00 committed by Kumar Gala
commit cef3912ecf

View file

@ -10,6 +10,17 @@
#include <logging/log.h>
LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
/*!< Power down all unnecessary blocks and enable RBB during deep sleep. */
#define APP_DEEPSLEEP_RUNCFG0 (SYSCTL0_PDRUNCFG0_LPOSC_PD_MASK | \
SYSCTL0_PDSLEEPCFG0_RBB_PD_MASK)
#define APP_DEEPSLEEP_RAM_APD 0xFFFFF8U
#define APP_DEEPSLEEP_RAM_PPD 0x0U
#define APP_EXCLUDE_FROM_DEEPSLEEP \
(((const uint32_t[]){APP_DEEPSLEEP_RUNCFG0, \
(SYSCTL0_PDSLEEPCFG1_FLEXSPI_SRAM_APD_MASK | \
SYSCTL0_PDSLEEPCFG1_FLEXSPI_SRAM_PPD_MASK), \
APP_DEEPSLEEP_RAM_APD, APP_DEEPSLEEP_RAM_PPD}))
/* Invoke Low Power/System Off specific Tasks */
void pm_power_state_set(struct pm_state_info info)
{
@ -29,6 +40,9 @@ void pm_power_state_set(struct pm_state_info info)
case PM_STATE_RUNTIME_IDLE:
POWER_EnterSleep();
break;
case PM_STATE_SUSPEND_TO_IDLE:
POWER_EnterDeepSleep(APP_EXCLUDE_FROM_DEEPSLEEP);
break;
default:
LOG_DBG("Unsupported power state %u", info.state);
break;