blob: d1e7beeba4d9d04de8ce10d656af5b5db4044062 [file] [log] [blame]
/*
* Copyright (c) 2022 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/logging/log.h>
#include <zephyr/kernel.h>
#include <zephyr/pm/pm.h>
LOG_MODULE_REGISTER(soc_pm, CONFIG_APP_LOG_LEVEL);
static const char *state2str(enum pm_state state)
{
switch (state) {
case PM_STATE_ACTIVE:
return "ACTIVE";
case PM_STATE_RUNTIME_IDLE:
return "RUNTIME_IDLE";
case PM_STATE_SUSPEND_TO_IDLE:
return "SUSPEND_TO_IDLE";
case PM_STATE_STANDBY:
return "STANDBY";
case PM_STATE_SUSPEND_TO_RAM:
return "SUSPEND_TO_RAM";
case PM_STATE_SUSPEND_TO_DISK:
return "SUSPEND_TO_DISK";
case PM_STATE_SOFT_OFF:
return "SOFT_OFF";
default:
return "UNKNOWN";
}
}
/*
* PM callbacks are typically implemented at SoC level and run the actual
* code to enter the given PM state.
*/
void pm_state_set(enum pm_state state, uint8_t substate_id)
{
LOG_INF("Entering %s{%u}", state2str(state), substate_id);
k_cpu_idle();
}
void pm_state_exit_post_ops(enum pm_state state, uint8_t substate_id)
{
ARG_UNUSED(state);
ARG_UNUSED(substate_id);
}