diff --git a/tests/subsys/pm/power_states_api/Kconfig b/tests/subsys/pm/power_states_api/Kconfig new file mode 100644 index 000000000000000..71c7b510f4d6b44 --- /dev/null +++ b/tests/subsys/pm/power_states_api/Kconfig @@ -0,0 +1,11 @@ +# Copyright (c) 2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +menu "Zephyr" +source "Kconfig.zephyr" +endmenu + +config TEST_PROVIDE_PM_HOOKS + bool "Provide PM hooks for test purposes" + default y + select HAS_PM diff --git a/tests/subsys/pm/power_states_api/prj.conf b/tests/subsys/pm/power_states_api/prj.conf index 9228251051ec064..e6e6a99627e25dd 100644 --- a/tests/subsys/pm/power_states_api/prj.conf +++ b/tests/subsys/pm/power_states_api/prj.conf @@ -1,2 +1,3 @@ CONFIG_ZTEST=y CONFIG_ZTEST_NEW_API=y +CONFIG_PM=y \ No newline at end of file diff --git a/tests/subsys/pm/power_states_api/src/main.c b/tests/subsys/pm/power_states_api/src/main.c index a7e76117815cb1e..3699bc0d3ff5ccc 100644 --- a/tests/subsys/pm/power_states_api/src/main.c +++ b/tests/subsys/pm/power_states_api/src/main.c @@ -18,8 +18,24 @@ static enum pm_state states[] = {PM_STATE_SUSPEND_TO_IDLE, static enum pm_state wrong_states[] = {PM_STATE_SUSPEND_TO_DISK, PM_STATE_SUSPEND_TO_RAM, PM_STATE_SUSPEND_TO_RAM}; +void pm_state_set(enum pm_state state, uint8_t substate_id) +{ + ARG_UNUSED(substate_id); + ARG_UNUSED(state); +} + +void pm_state_exit_post_ops(enum pm_state state, uint8_t substate_id) +{ + ARG_UNUSED(state); + ARG_UNUSED(substate_id); + + irq_unlock(0); +} + ZTEST(power_states_1cpu, test_power_states) { + uint8_t ret; + const struct pm_state_info *cpu_states; enum pm_state dts_states[] = PM_STATE_LIST_FROM_DT_CPU(DT_NODELABEL(cpu0)); struct pm_state_info dts_infos[] = @@ -36,6 +52,15 @@ ZTEST(power_states_1cpu, test_power_states) zassert_false(memcmp(wrong_states, dts_states, sizeof(dts_states)) == 0, "Invalid pm-states array"); + + ret = pm_state_cpu_get_all(CONFIG_MP_MAX_NUM_CPUS + 1, &cpu_states); + zassert_true(ret == 0, "Invalid pm_state_cpu_get_all return"); + + ret = pm_state_cpu_get_all(0U, &cpu_states); + zassert_true(ret == dts_states_len, + "Invalid number of pm states"); + zassert_true(memcmp(cpu_states, dts_infos, sizeof(dts_infos)) == 0, + "Invalid pm_state_info array"); } ZTEST_SUITE(power_states_1cpu, NULL, NULL, ztest_simple_1cpu_before,