blob: 302f57ff660d4328d20f5beb662bc4d2291c32a4 [file] [log] [blame]
/*
* Copyright (c) 2020 Intel Corporation.
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/kernel.h>
#include <zephyr/ztest.h>
#include <zephyr/pm/pm.h>
/* Last state has not declared a minimum residency, so it should be
* set the default 0 value
*/
static struct pm_state_info infos[] = {{PM_STATE_SUSPEND_TO_IDLE, 0, 10000, 100},
{PM_STATE_SUSPEND_TO_RAM, 0, 50000, 500}, {PM_STATE_STANDBY, 0, 0}};
static enum pm_state states[] = {PM_STATE_SUSPEND_TO_IDLE,
PM_STATE_SUSPEND_TO_RAM, PM_STATE_STANDBY};
static enum pm_state wrong_states[] = {PM_STATE_SUSPEND_TO_DISK,
PM_STATE_SUSPEND_TO_RAM, PM_STATE_SUSPEND_TO_RAM};
ZTEST(power_states_1cpu, test_power_states)
{
enum pm_state dts_states[] =
PM_STATE_LIST_FROM_DT_CPU(DT_NODELABEL(power_states));
struct pm_state_info dts_infos[] =
PM_STATE_INFO_LIST_FROM_DT_CPU(DT_NODELABEL(power_states));
uint32_t dts_states_len =
DT_NUM_CPU_POWER_STATES(DT_NODELABEL(power_states));
zassert_true(ARRAY_SIZE(states) == dts_states_len,
"Invalid number of pm states");
zassert_true(memcmp(infos, dts_infos, sizeof(dts_infos)) == 0,
"Invalid pm_state_info array");
zassert_true(memcmp(states, dts_states, sizeof(dts_states)) == 0,
"Invalid pm-states array");
zassert_false(memcmp(wrong_states, dts_states, sizeof(dts_states)) == 0,
"Invalid pm-states array");
}
ZTEST_SUITE(power_states_1cpu, NULL, NULL, ztest_simple_1cpu_before,
ztest_simple_1cpu_after, NULL);