diff --git a/include/pm/state.h b/include/pm/state.h index 17e8d1f3e8c..31498165221 100644 --- a/include/pm/state.h +++ b/include/pm/state.h @@ -159,16 +159,14 @@ struct pm_state_info { /** @cond INTERNAL_HIDDEN */ /** - * @brief Macro function to construct enum pm_state item in UTIL_LISTIFY - * extension. + * @brief Helper macro to initialize an entry of a struct pm_state_info array + * when using UTIL_LISTIFY in PM_STATE_INFO_LIST_FROM_DT_CPU. * - * @param child child index in UTIL_LISTIFY extension. + * @param i UTIL_LISTIFY entry index. * @param node_id A node identifier with compatible zephyr,power-state - * @return macro function to construct a pm_state_info */ -#define Z_PM_STATE_INFO_DT_ITEMS_LISTIFY_FUNC(child, node_id) \ - PM_STATE_INFO_DT_INIT(DT_PHANDLE_BY_IDX(node_id, cpu_power_states, \ - child)), +#define Z_PM_STATE_INFO_FROM_DT_CPU(i, node_id) \ + PM_STATE_INFO_DT_INIT(DT_PHANDLE_BY_IDX(node_id, cpu_power_states, i)), /** * @brief Macro function to construct enum pm_state item in UTIL_LISTIFY @@ -216,8 +214,8 @@ struct pm_state_info { DT_PROP_LEN_OR(node_id, cpu_power_states, 0) /** - * @brief Macro function to construct a list of 'pm_state_info' items by - * UTIL_LISTIFY func + * @brief Initialize an array of struct pm_state_info with information from all + * the states present in the given CPU node identifier. * * Example devicetree fragment: * @@ -253,16 +251,15 @@ struct pm_state_info { * * @code{.c} * const struct pm_state_info states[] = - * PM_STATE_INFO_DT_ITEMS_LIST(DT_NODELABEL(cpu0)); + * PM_STATE_INFO_LIST_FROM_DT_CPU(DT_NODELABEL(cpu0)); * @endcode * * @param node_id A CPU node identifier. - * @return an array of struct pm_state_info. */ -#define PM_STATE_INFO_DT_ITEMS_LIST(node_id) \ +#define PM_STATE_INFO_LIST_FROM_DT_CPU(node_id) \ { \ UTIL_LISTIFY(PM_STATE_DT_ITEMS_LEN(node_id), \ - Z_PM_STATE_INFO_DT_ITEMS_LISTIFY_FUNC, node_id) \ + Z_PM_STATE_INFO_FROM_DT_CPU, node_id) \ } /** diff --git a/samples/boards/mec15xxevb_assy6853/power_management/src/power_mgmt.c b/samples/boards/mec15xxevb_assy6853/power_management/src/power_mgmt.c index 6a9b547de77..57ac4a7ae43 100644 --- a/samples/boards/mec15xxevb_assy6853/power_management/src/power_mgmt.c +++ b/samples/boards/mec15xxevb_assy6853/power_management/src/power_mgmt.c @@ -49,7 +49,7 @@ static bool checks_enabled; struct pm_counter pm_counters[SLP_STATES_SUPPORTED]; static const struct pm_state_info residency_info[] = - PM_STATE_INFO_DT_ITEMS_LIST(DT_NODELABEL(cpu0)); + PM_STATE_INFO_LIST_FROM_DT_CPU(DT_NODELABEL(cpu0)); static size_t residency_info_len = PM_STATE_DT_ITEMS_LEN(DT_NODELABEL(cpu0)); diff --git a/subsys/pm/policy/policy_dummy.c b/subsys/pm/policy/policy_dummy.c index 0b82bc904db..05ddb99bfe0 100644 --- a/subsys/pm/policy/policy_dummy.c +++ b/subsys/pm/policy/policy_dummy.c @@ -16,7 +16,7 @@ LOG_MODULE_DECLARE(pm, CONFIG_PM_LOG_LEVEL); (struct pm_state_info){PM_STATE_ACTIVE, 0, 0} static const struct pm_state_info pm_dummy_states[] = - PM_STATE_INFO_DT_ITEMS_LIST(DT_NODELABEL(cpu0)); + PM_STATE_INFO_LIST_FROM_DT_CPU(DT_NODELABEL(cpu0)); struct pm_state_info pm_policy_next_state(uint8_t cpu, int32_t ticks) { diff --git a/subsys/pm/policy/policy_residency.c b/subsys/pm/policy/policy_residency.c index 93c19148bdc..832b34e13f9 100644 --- a/subsys/pm/policy/policy_residency.c +++ b/subsys/pm/policy/policy_residency.c @@ -16,7 +16,7 @@ LOG_MODULE_DECLARE(pm, CONFIG_PM_LOG_LEVEL); #if DT_NODE_EXISTS(DT_PATH(cpus)) -#define CPU_STATES(n) (struct pm_state_info[])PM_STATE_INFO_DT_ITEMS_LIST(n), +#define CPU_STATES(n) (struct pm_state_info[])PM_STATE_INFO_LIST_FROM_DT_CPU(n), static const struct pm_state_info *pm_min_residency[] = { DT_FOREACH_CHILD(DT_PATH(cpus), CPU_STATES) diff --git a/tests/subsys/pm/power_mgmt_soc/src/power_mgmt.c b/tests/subsys/pm/power_mgmt_soc/src/power_mgmt.c index b25317d7d59..20c54f0eb6f 100644 --- a/tests/subsys/pm/power_mgmt_soc/src/power_mgmt.c +++ b/tests/subsys/pm/power_mgmt_soc/src/power_mgmt.c @@ -52,7 +52,7 @@ static bool checks_enabled; struct pm_counter pm_counters[SLP_STATES_SUPPORTED]; static const struct pm_state_info residency_info[] = - PM_STATE_INFO_DT_ITEMS_LIST(DT_NODELABEL(cpu0)); + PM_STATE_INFO_LIST_FROM_DT_CPU(DT_NODELABEL(cpu0)); static size_t residency_info_len = PM_STATE_DT_ITEMS_LEN(DT_NODELABEL(cpu0)); static void pm_latency_check(void) diff --git a/tests/subsys/pm/power_states_api/src/main.c b/tests/subsys/pm/power_states_api/src/main.c index b748e2db8fc..72dc2c11cff 100644 --- a/tests/subsys/pm/power_states_api/src/main.c +++ b/tests/subsys/pm/power_states_api/src/main.c @@ -23,7 +23,7 @@ void test_power_states(void) enum pm_state dts_states[] = PM_STATE_DT_ITEMS_LIST(DT_NODELABEL(power_states)); struct pm_state_info dts_infos[] = - PM_STATE_INFO_DT_ITEMS_LIST(DT_NODELABEL(power_states)); + PM_STATE_INFO_LIST_FROM_DT_CPU(DT_NODELABEL(power_states)); uint32_t dts_states_len = PM_STATE_DT_ITEMS_LEN(DT_NODELABEL(power_states));