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 <gerard.marull@nordicsemi.no>
This commit is contained in:
parent
7ba38d8b26
commit
cd7ae8ea62
3 changed files with 11 additions and 12 deletions
|
@ -103,7 +103,9 @@ enum pm_state {
|
||||||
*
|
*
|
||||||
* @note This state is correlated with ACPI G2/S5 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,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -13,15 +13,13 @@
|
||||||
#include <logging/log.h>
|
#include <logging/log.h>
|
||||||
LOG_MODULE_DECLARE(pm, CONFIG_PM_LOG_LEVEL);
|
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_STATE_COUNT];
|
||||||
|
|
||||||
static atomic_t power_state_disable_count[PM_STATES_LEN];
|
|
||||||
|
|
||||||
__weak void pm_constraint_set(enum pm_state state)
|
__weak void pm_constraint_set(enum pm_state state)
|
||||||
{
|
{
|
||||||
atomic_val_t v;
|
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]);
|
v = atomic_inc(&power_state_disable_count[state]);
|
||||||
__ASSERT(v < UINT_MAX, "Power state disable count overflowed!");
|
__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;
|
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]);
|
v = atomic_dec(&power_state_disable_count[state]);
|
||||||
__ASSERT(v > 0, "Power state disable count underflowed!");
|
__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)
|
__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);
|
return (atomic_get(&power_state_disable_count[state]) == 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
#include <pm/policy.h>
|
#include <pm/policy.h>
|
||||||
#include <tracing/tracing.h>
|
#include <tracing/tracing.h>
|
||||||
|
|
||||||
#define PM_STATES_LEN (1 + PM_STATE_SOFT_OFF - PM_STATE_ACTIVE)
|
|
||||||
#include <logging/log.h>
|
#include <logging/log.h>
|
||||||
LOG_MODULE_REGISTER(pm, CONFIG_PM_LOG_LEVEL);
|
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);
|
STATS_NAME_END(pm_cpu_stats);
|
||||||
|
|
||||||
#define PM_STAT_NAME_LEN sizeof("pm_cpu_XXX_state_X_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 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_STATES_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)
|
static int pm_stats_init(const struct device *unused)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < CONFIG_MP_NUM_CPUS; i++) {
|
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,
|
snprintk(pm_cpu_stat_names[i][j], PM_STAT_NAME_LEN,
|
||||||
"pm_cpu_%03d_state_%1d_stats", i, j);
|
"pm_cpu_%03d_state_%1d_stats", i, j);
|
||||||
stats_init(&(pm_cpu_stats[i][j].s_hdr), STATS_SIZE_32, 3,
|
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;
|
bool ret = false;
|
||||||
|
|
||||||
__ASSERT(info.state < PM_STATES_LEN,
|
__ASSERT(info.state < PM_STATE_COUNT,
|
||||||
"Invalid power state %d!", info.state);
|
"Invalid power state %d!", info.state);
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue