/*
 * 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);
}
