From cd7ae8ea62496cf308bb219d6825fb041aa0ba66 Mon Sep 17 00:00:00 2001 From: Gerard Marull-Paretas Date: Mon, 22 Nov 2021 18:48:01 +0100 Subject: [PATCH] pm: define PM_STATE_COUNT to obtain number of states Replace PM_STATE_LEN with PM_STATE_COUNT, so that number of states is automatically computed. Signed-off-by: Gerard Marull-Paretas --- include/pm/state.h | 4 +++- subsys/pm/pm_ctrl.c | 10 ++++------ subsys/pm/power.c | 9 ++++----- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/include/pm/state.h b/include/pm/state.h index f9d71599b2a..8fca24f4aae 100644 --- a/include/pm/state.h +++ b/include/pm/state.h @@ -103,7 +103,9 @@ enum pm_state { * * @note This state is correlated with ACPI G2/S5 state */ - PM_STATE_SOFT_OFF + PM_STATE_SOFT_OFF, + /** Number of power management states (internal use) */ + PM_STATE_COUNT, }; /** diff --git a/subsys/pm/pm_ctrl.c b/subsys/pm/pm_ctrl.c index 287759e7d40..3af6e4cd26d 100644 --- a/subsys/pm/pm_ctrl.c +++ b/subsys/pm/pm_ctrl.c @@ -13,15 +13,13 @@ #include LOG_MODULE_DECLARE(pm, CONFIG_PM_LOG_LEVEL); -#define PM_STATES_LEN (1 + PM_STATE_SOFT_OFF - PM_STATE_ACTIVE) - -static atomic_t power_state_disable_count[PM_STATES_LEN]; +static atomic_t power_state_disable_count[PM_STATE_COUNT]; __weak void pm_constraint_set(enum pm_state state) { atomic_val_t v; - __ASSERT(state < PM_STATES_LEN, "Invalid power state!"); + __ASSERT(state < PM_STATE_COUNT, "Invalid power state!"); v = atomic_inc(&power_state_disable_count[state]); __ASSERT(v < UINT_MAX, "Power state disable count overflowed!"); @@ -33,7 +31,7 @@ __weak void pm_constraint_release(enum pm_state state) { atomic_val_t v; - __ASSERT(state < PM_STATES_LEN, "Invalid power state!"); + __ASSERT(state < PM_STATE_COUNT, "Invalid power state!"); v = atomic_dec(&power_state_disable_count[state]); __ASSERT(v > 0, "Power state disable count underflowed!"); @@ -43,7 +41,7 @@ __weak void pm_constraint_release(enum pm_state state) __weak bool pm_constraint_get(enum pm_state state) { - __ASSERT(state < PM_STATES_LEN, "Invalid power state!"); + __ASSERT(state < PM_STATE_COUNT, "Invalid power state!"); return (atomic_get(&power_state_disable_count[state]) == 0); } diff --git a/subsys/pm/power.c b/subsys/pm/power.c index 56d42b7503e..6dc45d43d01 100644 --- a/subsys/pm/power.c +++ b/subsys/pm/power.c @@ -17,7 +17,6 @@ #include #include -#define PM_STATES_LEN (1 + PM_STATE_SOFT_OFF - PM_STATE_ACTIVE) #include LOG_MODULE_REGISTER(pm, CONFIG_PM_LOG_LEVEL); @@ -67,13 +66,13 @@ STATS_NAME(pm_cpu_stats, state_total_cycles) STATS_NAME_END(pm_cpu_stats); #define PM_STAT_NAME_LEN sizeof("pm_cpu_XXX_state_X_stats") -static char pm_cpu_stat_names[CONFIG_MP_NUM_CPUS][PM_STATES_LEN][PM_STAT_NAME_LEN]; -static struct stats_pm_cpu_stats pm_cpu_stats[CONFIG_MP_NUM_CPUS][PM_STATES_LEN]; +static char pm_cpu_stat_names[CONFIG_MP_NUM_CPUS][PM_STATE_COUNT][PM_STAT_NAME_LEN]; +static struct stats_pm_cpu_stats pm_cpu_stats[CONFIG_MP_NUM_CPUS][PM_STATE_COUNT]; static int pm_stats_init(const struct device *unused) { for (int i = 0; i < CONFIG_MP_NUM_CPUS; i++) { - for (int j = 0; j < PM_STATES_LEN; j++) { + for (int j = 0; j < PM_STATE_COUNT; j++) { snprintk(pm_cpu_stat_names[i][j], PM_STAT_NAME_LEN, "pm_cpu_%03d_state_%1d_stats", i, j); stats_init(&(pm_cpu_stats[i][j].s_hdr), STATS_SIZE_32, 3, @@ -249,7 +248,7 @@ bool pm_power_state_force(uint8_t cpu, struct pm_state_info info) { bool ret = false; - __ASSERT(info.state < PM_STATES_LEN, + __ASSERT(info.state < PM_STATE_COUNT, "Invalid power state %d!", info.state);