pm: Reference pm_state_info only by pointer

It's unnecessary to move the pm_state_info around by value, just use a
pointer.

Signed-off-by: Carlo Caione <ccaione@baylibre.com>
This commit is contained in:
Carlo Caione 2022-01-21 13:59:31 +01:00 committed by Anas Nashif
commit 11f1dd2370
27 changed files with 168 additions and 168 deletions

View file

@ -77,7 +77,7 @@ struct pm_notifier {
* @param info Power state which should be used in the ongoing * @param info Power state which should be used in the ongoing
* suspend operation. * suspend operation.
*/ */
bool pm_power_state_force(uint8_t cpu, struct pm_state_info info); bool pm_power_state_force(uint8_t cpu, const struct pm_state_info *info);
/** /**
* @brief Register a power management notifier * @brief Register a power management notifier
@ -111,7 +111,7 @@ int pm_notifier_unregister(struct pm_notifier *notifier);
* @param cpu CPU index. * @param cpu CPU index.
* @return next pm_state_info that will be used * @return next pm_state_info that will be used
*/ */
struct pm_state_info pm_power_state_next_get(uint8_t cpu); const struct pm_state_info *pm_power_state_next_get(uint8_t cpu);
/** /**
* @} * @}
@ -182,7 +182,7 @@ bool pm_constraint_get(enum pm_state state);
* @param info Power state which should be used in the ongoing * @param info Power state which should be used in the ongoing
* suspend operation. * suspend operation.
*/ */
void pm_power_state_set(struct pm_state_info info); void pm_power_state_set(struct pm_state_info *info);
/** /**
* @brief Do any SoC or architecture specific post ops after sleep state exits. * @brief Do any SoC or architecture specific post ops after sleep state exits.
@ -194,7 +194,7 @@ void pm_power_state_set(struct pm_state_info info);
* *
* @param info Power state that the given cpu is leaving. * @param info Power state that the given cpu is leaving.
*/ */
void pm_power_state_exit_post_ops(struct pm_state_info info); void pm_power_state_exit_post_ops(struct pm_state_info *info);
/** /**
* @} * @}
@ -212,7 +212,7 @@ void pm_power_state_exit_post_ops(struct pm_state_info info);
#define pm_power_state_set(info) #define pm_power_state_set(info)
#define pm_power_state_exit_post_ops(info) #define pm_power_state_exit_post_ops(info)
#define pm_power_state_next_get(cpu) \ #define pm_power_state_next_get(cpu) \
((struct pm_state_info){PM_STATE_ACTIVE, 0, 0}) (&(struct pm_state_info){PM_STATE_ACTIVE, 0, 0})
#endif /* CONFIG_PM */ #endif /* CONFIG_PM */

View file

@ -91,7 +91,7 @@ void main(void)
* controlled delay. Here we need to override that, then * controlled delay. Here we need to override that, then
* force entry to deep sleep on any delay. * force entry to deep sleep on any delay.
*/ */
pm_power_state_force(0u, (struct pm_state_info){PM_STATE_SOFT_OFF, 0, 0}); pm_power_state_force(0u, &(struct pm_state_info){PM_STATE_SOFT_OFF, 0, 0});
printk("ERROR: System off failed\n"); printk("ERROR: System off failed\n");
while (true) { while (true) {

View file

@ -118,5 +118,5 @@ void main(void)
printk("Device shutdown\n"); printk("Device shutdown\n");
pm_power_state_force(0u, (struct pm_state_info){PM_STATE_SOFT_OFF, 0, 0}); pm_power_state_force(0u, &(struct pm_state_info){PM_STATE_SOFT_OFF, 0, 0});
} }

View file

@ -67,7 +67,7 @@ void main(void)
/* /*
* Force the SOFT_OFF state. * Force the SOFT_OFF state.
*/ */
pm_power_state_force(0u, (struct pm_state_info){PM_STATE_SOFT_OFF, 0, 0}); pm_power_state_force(0u, &(struct pm_state_info){PM_STATE_SOFT_OFF, 0, 0});
printk("ERROR: System off failed\n"); printk("ERROR: System off failed\n");
while (true) { while (true) {

View file

@ -101,9 +101,9 @@ static void z_power_soc_sleep(void)
* For deep sleep pm_system_suspend has executed all the driver * For deep sleep pm_system_suspend has executed all the driver
* power management call backs. * power management call backs.
*/ */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_SUSPEND_TO_IDLE: case PM_STATE_SUSPEND_TO_IDLE:
z_power_soc_sleep(); z_power_soc_sleep();
break; break;
@ -123,9 +123,9 @@ __weak void pm_power_state_set(struct pm_state_info info)
* an ISR on wake except for faults. We re-enable interrupts by setting PRIMASK * an ISR on wake except for faults. We re-enable interrupts by setting PRIMASK
* to 0. * to 0.
*/ */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_SUSPEND_TO_IDLE: case PM_STATE_SUSPEND_TO_IDLE:
case PM_STATE_SUSPEND_TO_RAM: case PM_STATE_SUSPEND_TO_RAM:
__set_PRIMASK(0); __set_PRIMASK(0);

View file

@ -11,27 +11,27 @@
LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL); LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
/* Invoke Low Power/System Off specific Tasks */ /* Invoke Low Power/System Off specific Tasks */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_SOFT_OFF: case PM_STATE_SOFT_OFF:
nrf_power_system_off(NRF_POWER); nrf_power_system_off(NRF_POWER);
break; break;
default: default:
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
break; break;
} }
} }
/* Handle SOC specific activity after Low Power Mode Exit */ /* Handle SOC specific activity after Low Power Mode Exit */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_SOFT_OFF: case PM_STATE_SOFT_OFF:
/* Nothing to do. */ /* Nothing to do. */
break; break;
default: default:
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
break; break;
} }

View file

@ -11,27 +11,27 @@
LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL); LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
/* Invoke Low Power/System Off specific Tasks */ /* Invoke Low Power/System Off specific Tasks */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_SOFT_OFF: case PM_STATE_SOFT_OFF:
nrf_power_system_off(NRF_POWER); nrf_power_system_off(NRF_POWER);
break; break;
default: default:
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
break; break;
} }
} }
/* Handle SOC specific activity after Low Power Mode Exit */ /* Handle SOC specific activity after Low Power Mode Exit */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_SOFT_OFF: case PM_STATE_SOFT_OFF:
/* Nothing to do. */ /* Nothing to do. */
break; break;
default: default:
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
break; break;
} }

View file

@ -13,27 +13,27 @@
LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL); LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
/* Invoke Low Power/System Off specific Tasks */ /* Invoke Low Power/System Off specific Tasks */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_SOFT_OFF: case PM_STATE_SOFT_OFF:
nrf_regulators_system_off(NRF_REGULATORS); nrf_regulators_system_off(NRF_REGULATORS);
break; break;
default: default:
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
break; break;
} }
} }
/* Handle SOC specific activity after Low Power Mode Exit */ /* Handle SOC specific activity after Low Power Mode Exit */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_SOFT_OFF: case PM_STATE_SOFT_OFF:
/* Nothing to do. */ /* Nothing to do. */
break; break;
default: default:
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
break; break;
} }

View file

@ -12,27 +12,27 @@
LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL); LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
/* Invoke Low Power/System Off specific Tasks */ /* Invoke Low Power/System Off specific Tasks */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_SOFT_OFF: case PM_STATE_SOFT_OFF:
nrf_regulators_system_off(NRF_REGULATORS); nrf_regulators_system_off(NRF_REGULATORS);
break; break;
default: default:
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
break; break;
} }
} }
/* Handle SOC specific activity after Low Power Mode Exit */ /* Handle SOC specific activity after Low Power Mode Exit */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_SOFT_OFF: case PM_STATE_SOFT_OFF:
/* Nothing to do. */ /* Nothing to do. */
break; break;
default: default:
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
break; break;
} }

View file

@ -144,12 +144,12 @@ static void npcx_power_enter_system_sleep(int slp_mode, int wk_mode)
} }
/* Invoke when enter "Suspend/Low Power" mode. */ /* Invoke when enter "Suspend/Low Power" mode. */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
if (info.state != PM_STATE_SUSPEND_TO_IDLE) { if (info->state != PM_STATE_SUSPEND_TO_IDLE) {
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
} else { } else {
switch (info.substate_id) { switch (info->substate_id) {
case 0: /* Sub-state 0: Deep sleep with instant wake-up */ case 0: /* Sub-state 0: Deep sleep with instant wake-up */
npcx_power_enter_system_sleep(NPCX_DEEP_SLEEP, npcx_power_enter_system_sleep(NPCX_DEEP_SLEEP,
NPCX_INSTANT_WAKE_UP); NPCX_INSTANT_WAKE_UP);
@ -166,19 +166,19 @@ __weak void pm_power_state_set(struct pm_state_info info)
break; break;
default: default:
LOG_DBG("Unsupported power substate-id %u", LOG_DBG("Unsupported power substate-id %u",
info.substate_id); info->substate_id);
break; break;
} }
} }
} }
/* Handle soc specific activity after exiting "Suspend/Low Power" mode. */ /* Handle soc specific activity after exiting "Suspend/Low Power" mode. */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
if (info.state != PM_STATE_SUSPEND_TO_IDLE) { if (info->state != PM_STATE_SUSPEND_TO_IDLE) {
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
} else { } else {
switch (info.substate_id) { switch (info->substate_id) {
case 0: /* Sub-state 0: Deep sleep with instant wake-up */ case 0: /* Sub-state 0: Deep sleep with instant wake-up */
/* Restore interrupts */ /* Restore interrupts */
__enable_irq(); __enable_irq();
@ -189,7 +189,7 @@ __weak void pm_power_state_exit_post_ops(struct pm_state_info info)
break; break;
default: default:
LOG_DBG("Unsupported power substate-id %u", LOG_DBG("Unsupported power substate-id %u",
info.substate_id); info->substate_id);
break; break;
} }
} }

View file

@ -283,11 +283,11 @@ void cpu_mode_transition(gpc_cpu_mode_t mode, bool enable_standby)
* SOC specific low power mode implementation * SOC specific low power mode implementation
* Drop to lowest power state possible given system's request * Drop to lowest power state possible given system's request
*/ */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
/* Extract set point and GPC mode from the substate ID */ /* Extract set point and GPC mode from the substate ID */
uint8_t set_point = IMX_SPC(info.substate_id); uint8_t set_point = IMX_SPC(info->substate_id);
gpc_cpu_mode_t gpc_mode = IMX_GPC_MODE(info.substate_id); gpc_cpu_mode_t gpc_mode = IMX_GPC_MODE(info->substate_id);
uint8_t current_set_point = GPC_SP_GetCurrentSetPoint(GPC_SET_POINT_CTRL); uint8_t current_set_point = GPC_SP_GetCurrentSetPoint(GPC_SET_POINT_CTRL);
LOG_DBG("Switch to Set Point %d, GPC Mode %d requested", set_point, gpc_mode); LOG_DBG("Switch to Set Point %d, GPC Mode %d requested", set_point, gpc_mode);
@ -304,7 +304,7 @@ __weak void pm_power_state_set(struct pm_state_info info)
} }
} }
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
ARG_UNUSED(info); ARG_UNUSED(info);
/* Clear PRIMASK */ /* Clear PRIMASK */

View file

@ -22,7 +22,7 @@ LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
APP_DEEPSLEEP_RAM_APD, APP_DEEPSLEEP_RAM_PPD})) APP_DEEPSLEEP_RAM_APD, APP_DEEPSLEEP_RAM_PPD}))
/* Invoke Low Power/System Off specific Tasks */ /* Invoke Low Power/System Off specific Tasks */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
/* FIXME: When this function is entered the Kernel has disabled /* FIXME: When this function is entered the Kernel has disabled
* interrupts using BASEPRI register. This is incorrect as it prevents * interrupts using BASEPRI register. This is incorrect as it prevents
@ -36,7 +36,7 @@ __weak void pm_power_state_set(struct pm_state_info info)
/* Set BASEPRI to 0 */ /* Set BASEPRI to 0 */
irq_unlock(0); irq_unlock(0);
switch (info.state) { switch (info->state) {
case PM_STATE_RUNTIME_IDLE: case PM_STATE_RUNTIME_IDLE:
POWER_EnterSleep(); POWER_EnterSleep();
break; break;
@ -44,13 +44,13 @@ __weak void pm_power_state_set(struct pm_state_info info)
POWER_EnterDeepSleep(APP_EXCLUDE_FROM_DEEPSLEEP); POWER_EnterDeepSleep(APP_EXCLUDE_FROM_DEEPSLEEP);
break; break;
default: default:
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
break; break;
} }
} }
/* Handle SOC specific activity after Low Power Mode Exit */ /* Handle SOC specific activity after Low Power Mode Exit */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
ARG_UNUSED(info); ARG_UNUSED(info);

View file

@ -25,15 +25,15 @@ __ramfunc static void wait_for_flash_prefetch_and_idle(void)
} }
#endif /* CONFIG_XIP */ #endif /* CONFIG_XIP */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_RUNTIME_IDLE: case PM_STATE_RUNTIME_IDLE:
k_cpu_idle(); k_cpu_idle();
break; break;
case PM_STATE_SUSPEND_TO_IDLE: case PM_STATE_SUSPEND_TO_IDLE:
/* Set partial stop mode and enable deep sleep */ /* Set partial stop mode and enable deep sleep */
SMC->STOPCTRL = SMC_STOPCTRL_PSTOPO(info.substate_id); SMC->STOPCTRL = SMC_STOPCTRL_PSTOPO(info->substate_id);
SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
#ifdef CONFIG_XIP #ifdef CONFIG_XIP
wait_for_flash_prefetch_and_idle(); wait_for_flash_prefetch_and_idle();
@ -46,16 +46,16 @@ __weak void pm_power_state_set(struct pm_state_info info)
} }
break; break;
default: default:
LOG_WRN("Unsupported power state %u", info.state); LOG_WRN("Unsupported power state %u", info->state);
break; break;
} }
} }
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
ARG_UNUSED(info); ARG_UNUSED(info);
if (info.state == PM_STATE_SUSPEND_TO_IDLE) { if (info->state == PM_STATE_SUSPEND_TO_IDLE) {
/* Disable deep sleep upon exit */ /* Disable deep sleep upon exit */
SCB->SCR &= ~(SCB_SCR_SLEEPDEEP_Msk); SCB->SCR &= ~(SCB_SCR_SLEEPDEEP_Msk);
} }

View file

@ -18,9 +18,9 @@ LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
*/ */
/* Invoke Low Power/System Off specific Tasks */ /* Invoke Low Power/System Off specific Tasks */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
LOG_DBG("SoC entering power state %d", info.state); LOG_DBG("SoC entering power state %d", info->state);
/* FIXME: When this function is entered the Kernel has disabled /* FIXME: When this function is entered the Kernel has disabled
* interrupts using BASEPRI register. This is incorrect as it prevents * interrupts using BASEPRI register. This is incorrect as it prevents
@ -34,7 +34,7 @@ __weak void pm_power_state_set(struct pm_state_info info)
/* Set BASEPRI to 0 */ /* Set BASEPRI to 0 */
irq_unlock(0); irq_unlock(0);
switch (info.state) { switch (info->state) {
case PM_STATE_RUNTIME_IDLE: case PM_STATE_RUNTIME_IDLE:
EMU_EnterEM1(); EMU_EnterEM1();
break; break;
@ -45,18 +45,18 @@ __weak void pm_power_state_set(struct pm_state_info info)
EMU_EnterEM3(true); EMU_EnterEM3(true);
break; break;
default: default:
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
break; break;
} }
LOG_DBG("SoC leaving power state %d", info.state); LOG_DBG("SoC leaving power state %d", info->state);
/* Clear PRIMASK */ /* Clear PRIMASK */
__enable_irq(); __enable_irq();
} }
/* Handle SOC specific activity after Low Power Mode Exit */ /* Handle SOC specific activity after Low Power Mode Exit */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
ARG_UNUSED(info); ARG_UNUSED(info);
} }

View file

@ -20,14 +20,14 @@
LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL); LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
/* Invoke Low Power/System Off specific Tasks */ /* Invoke Low Power/System Off specific Tasks */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
if (info.state != PM_STATE_SUSPEND_TO_IDLE) { if (info->state != PM_STATE_SUSPEND_TO_IDLE) {
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
return; return;
} }
switch (info.substate_id) { switch (info->substate_id) {
case 1: /* this corresponds to the STOP0 mode: */ case 1: /* this corresponds to the STOP0 mode: */
/* enter STOP0 mode */ /* enter STOP0 mode */
LL_PWR_SetPowerMode(LL_PWR_MODE_STOP0); LL_PWR_SetPowerMode(LL_PWR_MODE_STOP0);
@ -44,18 +44,18 @@ __weak void pm_power_state_set(struct pm_state_info info)
break; break;
default: default:
LOG_DBG("Unsupported power state substate-id %u", LOG_DBG("Unsupported power state substate-id %u",
info.substate_id); info->substate_id);
break; break;
} }
} }
/* Handle SOC specific activity after Low Power Mode Exit */ /* Handle SOC specific activity after Low Power Mode Exit */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
if (info.state != PM_STATE_SUSPEND_TO_IDLE) { if (info->state != PM_STATE_SUSPEND_TO_IDLE) {
LOG_DBG("Unsupported power substate %u", info.state); LOG_DBG("Unsupported power substate %u", info->state);
} else { } else {
switch (info.substate_id) { switch (info->substate_id) {
case 1: /* STOP0 */ case 1: /* STOP0 */
__fallthrough; __fallthrough;
case 2: /* STOP1 */ case 2: /* STOP1 */
@ -65,7 +65,7 @@ __weak void pm_power_state_exit_post_ops(struct pm_state_info info)
break; break;
default: default:
LOG_DBG("Unsupported power substate-id %u", LOG_DBG("Unsupported power substate-id %u",
info.substate_id); info->substate_id);
break; break;
} }
/* need to restore the clock */ /* need to restore the clock */

View file

@ -28,9 +28,9 @@ LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
#endif #endif
/* Invoke Low Power/System Off specific Tasks */ /* Invoke Low Power/System Off specific Tasks */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_SUSPEND_TO_IDLE: case PM_STATE_SUSPEND_TO_IDLE:
LL_RCC_SetClkAfterWakeFromStop(RCC_STOP_WAKEUPCLOCK_SELECTED); LL_RCC_SetClkAfterWakeFromStop(RCC_STOP_WAKEUPCLOCK_SELECTED);
LL_PWR_ClearFlag_WU(); LL_PWR_ClearFlag_WU();
@ -46,15 +46,15 @@ __weak void pm_power_state_set(struct pm_state_info info)
k_cpu_idle(); k_cpu_idle();
break; break;
default: default:
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
break; break;
} }
} }
/* Handle SOC specific activity after Low Power Mode Exit */ /* Handle SOC specific activity after Low Power Mode Exit */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_SUSPEND_TO_IDLE: case PM_STATE_SUSPEND_TO_IDLE:
LL_LPM_DisableSleepOnExit(); LL_LPM_DisableSleepOnExit();
LL_LPM_EnableSleep(); LL_LPM_EnableSleep();
@ -67,7 +67,7 @@ __weak void pm_power_state_exit_post_ops(struct pm_state_info info)
/* Nothing to do. */ /* Nothing to do. */
break; break;
default: default:
LOG_DBG("Unsupported power substate-id %u", info.state); LOG_DBG("Unsupported power substate-id %u", info->state);
break; break;
} }

View file

@ -28,14 +28,14 @@ LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
#endif #endif
/* Invoke Low Power/System Off specific Tasks */ /* Invoke Low Power/System Off specific Tasks */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
if (info.state != PM_STATE_SUSPEND_TO_IDLE) { if (info->state != PM_STATE_SUSPEND_TO_IDLE) {
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
return; return;
} }
switch (info.substate_id) { switch (info->substate_id) {
case 1: /* this corresponds to the STOP0 mode: */ case 1: /* this corresponds to the STOP0 mode: */
/* ensure the proper wake-up system clock */ /* ensure the proper wake-up system clock */
LL_RCC_SetClkAfterWakeFromStop(RCC_STOP_WAKEUPCLOCK_SELECTED); LL_RCC_SetClkAfterWakeFromStop(RCC_STOP_WAKEUPCLOCK_SELECTED);
@ -68,18 +68,18 @@ __weak void pm_power_state_set(struct pm_state_info info)
break; break;
default: default:
LOG_DBG("Unsupported power state substate-id %u", LOG_DBG("Unsupported power state substate-id %u",
info.substate_id); info->substate_id);
break; break;
} }
} }
/* Handle SOC specific activity after Low Power Mode Exit */ /* Handle SOC specific activity after Low Power Mode Exit */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
if (info.state != PM_STATE_SUSPEND_TO_IDLE) { if (info->state != PM_STATE_SUSPEND_TO_IDLE) {
LOG_DBG("Unsupported power substate-id %u", info.state); LOG_DBG("Unsupported power substate-id %u", info->state);
} else { } else {
switch (info.substate_id) { switch (info->substate_id) {
case 1: /* STOP0 */ case 1: /* STOP0 */
__fallthrough; __fallthrough;
case 2: /* STOP1 */ case 2: /* STOP1 */
@ -90,7 +90,7 @@ __weak void pm_power_state_exit_post_ops(struct pm_state_info info)
break; break;
default: default:
LOG_DBG("Unsupported power substate-id %u", LOG_DBG("Unsupported power substate-id %u",
info.substate_id); info->substate_id);
break; break;
} }
/* need to restore the clock */ /* need to restore the clock */

View file

@ -28,14 +28,14 @@ LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
#endif #endif
/* Invoke Low Power/System Off specific Tasks */ /* Invoke Low Power/System Off specific Tasks */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
if (info.state != PM_STATE_SUSPEND_TO_IDLE) { if (info->state != PM_STATE_SUSPEND_TO_IDLE) {
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
return; return;
} }
switch (info.substate_id) { switch (info->substate_id) {
case 1: /* this corresponds to the STOP0 mode: */ case 1: /* this corresponds to the STOP0 mode: */
/* ensure the proper wake-up system clock */ /* ensure the proper wake-up system clock */
LL_RCC_SetClkAfterWakeFromStop(RCC_STOP_WAKEUPCLOCK_SELECTED); LL_RCC_SetClkAfterWakeFromStop(RCC_STOP_WAKEUPCLOCK_SELECTED);
@ -68,18 +68,18 @@ __weak void pm_power_state_set(struct pm_state_info info)
break; break;
default: default:
LOG_DBG("Unsupported power state substate-id %u", LOG_DBG("Unsupported power state substate-id %u",
info.substate_id); info->substate_id);
break; break;
} }
} }
/* Handle SOC specific activity after Low Power Mode Exit */ /* Handle SOC specific activity after Low Power Mode Exit */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
if (info.state != PM_STATE_SUSPEND_TO_IDLE) { if (info->state != PM_STATE_SUSPEND_TO_IDLE) {
LOG_DBG("Unsupported power substate-id %u", info.state); LOG_DBG("Unsupported power substate-id %u", info->state);
} else { } else {
switch (info.substate_id) { switch (info->substate_id) {
case 1: /* STOP0 */ case 1: /* STOP0 */
__fallthrough; __fallthrough;
case 2: /* STOP1 */ case 2: /* STOP1 */
@ -90,7 +90,7 @@ __weak void pm_power_state_exit_post_ops(struct pm_state_info info)
break; break;
default: default:
LOG_DBG("Unsupported power substate-id %u", LOG_DBG("Unsupported power substate-id %u",
info.substate_id); info->substate_id);
break; break;
} }
/* need to restore the clock */ /* need to restore the clock */

View file

@ -62,22 +62,22 @@ void set_mode_shutdown(uint8_t substate_id)
} }
/* Invoke Low Power/System Off specific Tasks */ /* Invoke Low Power/System Off specific Tasks */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_SUSPEND_TO_IDLE: case PM_STATE_SUSPEND_TO_IDLE:
set_mode_stop(info.substate_id); set_mode_stop(info->substate_id);
break; break;
case PM_STATE_STANDBY: case PM_STATE_STANDBY:
/* To be tested */ /* To be tested */
set_mode_standby(info.substate_id); set_mode_standby(info->substate_id);
break; break;
case PM_STATE_SOFT_OFF: case PM_STATE_SOFT_OFF:
set_mode_shutdown(info.substate_id); set_mode_shutdown(info->substate_id);
break; break;
default: default:
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
return; return;
} }
@ -89,16 +89,16 @@ __weak void pm_power_state_set(struct pm_state_info info)
} }
/* Handle SOC specific activity after Low Power Mode Exit */ /* Handle SOC specific activity after Low Power Mode Exit */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_SUSPEND_TO_IDLE: case PM_STATE_SUSPEND_TO_IDLE:
if (info.substate_id <= 3) { if (info->substate_id <= 3) {
LL_LPM_DisableSleepOnExit(); LL_LPM_DisableSleepOnExit();
LL_LPM_EnableSleep(); LL_LPM_EnableSleep();
} else { } else {
LOG_DBG("Unsupported power substate-id %u", LOG_DBG("Unsupported power substate-id %u",
info.substate_id); info->substate_id);
} }
case PM_STATE_STANDBY: case PM_STATE_STANDBY:
/* To be tested */ /* To be tested */
@ -113,7 +113,7 @@ __weak void pm_power_state_exit_post_ops(struct pm_state_info info)
case PM_STATE_SUSPEND_TO_DISK: case PM_STATE_SUSPEND_TO_DISK:
__fallthrough; __fallthrough;
default: default:
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
break; break;
} }
/* need to restore the clock */ /* need to restore the clock */

View file

@ -84,9 +84,9 @@ static void shutdown_ble_stack(void)
} }
/* Invoke Low Power/System Off specific Tasks */ /* Invoke Low Power/System Off specific Tasks */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
if (info.state == PM_STATE_SOFT_OFF) { if (info->state == PM_STATE_SOFT_OFF) {
if (IS_ENABLED(CONFIG_BT)) { if (IS_ENABLED(CONFIG_BT)) {
shutdown_ble_stack(); shutdown_ble_stack();
@ -99,14 +99,14 @@ __weak void pm_power_state_set(struct pm_state_info info)
LL_PWR_SetPowerMode(LL_PWR_MODE_SHUTDOWN); LL_PWR_SetPowerMode(LL_PWR_MODE_SHUTDOWN);
} else if (info.state == PM_STATE_SUSPEND_TO_IDLE) { } else if (info->state == PM_STATE_SUSPEND_TO_IDLE) {
lpm_hsem_lock(); lpm_hsem_lock();
/* ensure HSI is the wake-up system clock */ /* ensure HSI is the wake-up system clock */
LL_RCC_SetClkAfterWakeFromStop(LL_RCC_STOP_WAKEUPCLOCK_HSI); LL_RCC_SetClkAfterWakeFromStop(LL_RCC_STOP_WAKEUPCLOCK_HSI);
switch (info.substate_id) { switch (info->substate_id) {
case 1: case 1:
/* enter STOP0 mode */ /* enter STOP0 mode */
LL_PWR_SetPowerMode(LL_PWR_MODE_STOP0); LL_PWR_SetPowerMode(LL_PWR_MODE_STOP0);
@ -122,12 +122,12 @@ __weak void pm_power_state_set(struct pm_state_info info)
default: default:
/* Release RCC semaphore */ /* Release RCC semaphore */
z_stm32_hsem_unlock(CFG_HW_RCC_SEMID); z_stm32_hsem_unlock(CFG_HW_RCC_SEMID);
LOG_DBG("Unsupported power substate-id %u", info.substate_id); LOG_DBG("Unsupported power substate-id %u", info->substate_id);
return; return;
} }
} else { } else {
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
return; return;
} }
@ -141,17 +141,17 @@ __weak void pm_power_state_set(struct pm_state_info info)
} }
/* Handle SOC specific activity after Low Power Mode Exit */ /* Handle SOC specific activity after Low Power Mode Exit */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
/* Implementation of STM32 AN5289 algorithm to enter/exit lowpower */ /* Implementation of STM32 AN5289 algorithm to enter/exit lowpower */
/* Release ENTRY_STOP_MODE semaphore */ /* Release ENTRY_STOP_MODE semaphore */
LL_HSEM_ReleaseLock(HSEM, CFG_HW_ENTRY_STOP_MODE_SEMID, 0); LL_HSEM_ReleaseLock(HSEM, CFG_HW_ENTRY_STOP_MODE_SEMID, 0);
z_stm32_hsem_lock(CFG_HW_RCC_SEMID, HSEM_LOCK_WAIT_FOREVER); z_stm32_hsem_lock(CFG_HW_RCC_SEMID, HSEM_LOCK_WAIT_FOREVER);
if (info.state != PM_STATE_SUSPEND_TO_IDLE) { if (info->state != PM_STATE_SUSPEND_TO_IDLE) {
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
} else { } else {
switch (info.substate_id) { switch (info->substate_id) {
case 1: /* STOP0 */ case 1: /* STOP0 */
__fallthrough; __fallthrough;
case 2: /* STOP1 */ case 2: /* STOP1 */
@ -162,7 +162,7 @@ __weak void pm_power_state_exit_post_ops(struct pm_state_info info)
break; break;
default: default:
LOG_DBG("Unsupported power substate-id %u", LOG_DBG("Unsupported power substate-id %u",
info.substate_id); info->substate_id);
break; break;
} }
/* need to restore the clock */ /* need to restore the clock */

View file

@ -28,13 +28,13 @@ LOG_MODULE_DECLARE(soc, CONFIG_SOC_LOG_LEVEL);
#endif #endif
/* Invoke Low Power/System Off specific Tasks */ /* Invoke Low Power/System Off specific Tasks */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_SUSPEND_TO_IDLE: case PM_STATE_SUSPEND_TO_IDLE:
LL_RCC_SetClkAfterWakeFromStop(RCC_STOP_WAKEUPCLOCK_SELECTED); LL_RCC_SetClkAfterWakeFromStop(RCC_STOP_WAKEUPCLOCK_SELECTED);
LL_PWR_ClearFlag_WU(); LL_PWR_ClearFlag_WU();
switch (info.substate_id) { switch (info->substate_id) {
case 1: case 1:
LL_PWR_SetPowerMode(LL_PWR_MODE_STOP0); LL_PWR_SetPowerMode(LL_PWR_MODE_STOP0);
break; break;
@ -45,7 +45,7 @@ __weak void pm_power_state_set(struct pm_state_info info)
LL_PWR_SetPowerMode(LL_PWR_MODE_STOP2); LL_PWR_SetPowerMode(LL_PWR_MODE_STOP2);
break; break;
default: default:
LOG_DBG("Unsupported power substate-id %u", info.substate_id); LOG_DBG("Unsupported power substate-id %u", info->substate_id);
return; return;
} }
LL_LPM_EnableDeepSleep(); LL_LPM_EnableDeepSleep();
@ -53,7 +53,7 @@ __weak void pm_power_state_set(struct pm_state_info info)
break; break;
case PM_STATE_SOFT_OFF: case PM_STATE_SOFT_OFF:
LL_PWR_ClearFlag_WU(); LL_PWR_ClearFlag_WU();
switch (info.substate_id) { switch (info->substate_id) {
case 0: case 0:
LL_PWR_SetPowerMode(LL_PWR_MODE_STANDBY); LL_PWR_SetPowerMode(LL_PWR_MODE_STANDBY);
break; break;
@ -61,22 +61,22 @@ __weak void pm_power_state_set(struct pm_state_info info)
LL_PWR_SetPowerMode(LL_PWR_MODE_SHUTDOWN); LL_PWR_SetPowerMode(LL_PWR_MODE_SHUTDOWN);
break; break;
default: default:
LOG_DBG("Unsupported power substate-id %u", info.substate_id); LOG_DBG("Unsupported power substate-id %u", info->substate_id);
return; return;
} }
LL_LPM_EnableDeepSleep(); LL_LPM_EnableDeepSleep();
k_cpu_idle(); k_cpu_idle();
break; break;
default: default:
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
break; break;
} }
} }
/* Handle SOC specific activity after Low Power Mode Exit */ /* Handle SOC specific activity after Low Power Mode Exit */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
case PM_STATE_SUSPEND_TO_IDLE: case PM_STATE_SUSPEND_TO_IDLE:
LL_LPM_DisableSleepOnExit(); LL_LPM_DisableSleepOnExit();
LL_LPM_EnableSleep(); LL_LPM_EnableSleep();
@ -87,7 +87,7 @@ __weak void pm_power_state_exit_post_ops(struct pm_state_info info)
/* Nothing to do. */ /* Nothing to do. */
break; break;
default: default:
LOG_DBG("Unsupported power substate-id %u", info.state); LOG_DBG("Unsupported power substate-id %u", info->state);
break; break;
} }

View file

@ -57,12 +57,12 @@ extern PowerCC26X2_ModuleState PowerCC26X2_module;
*/ */
/* Invoke Low Power/System Off specific Tasks */ /* Invoke Low Power/System Off specific Tasks */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
uint32_t modeVIMS; uint32_t modeVIMS;
uint32_t constraints; uint32_t constraints;
LOG_DBG("SoC entering power state %d", info.state); LOG_DBG("SoC entering power state %d", info->state);
/* Switch to using PRIMASK instead of BASEPRI register, since /* Switch to using PRIMASK instead of BASEPRI register, since
* we are only able to wake up from standby while using PRIMASK. * we are only able to wake up from standby while using PRIMASK.
@ -72,7 +72,7 @@ __weak void pm_power_state_set(struct pm_state_info info)
/* Set BASEPRI to 0 */ /* Set BASEPRI to 0 */
irq_unlock(0); irq_unlock(0);
switch (info.state) { switch (info->state) {
case PM_STATE_SUSPEND_TO_IDLE: case PM_STATE_SUSPEND_TO_IDLE:
/* query the declared constraints */ /* query the declared constraints */
constraints = Power_getConstraintMask(); constraints = Power_getConstraintMask();
@ -111,15 +111,15 @@ __weak void pm_power_state_set(struct pm_state_info info)
Power_shutdown(0, 0); Power_shutdown(0, 0);
break; break;
default: default:
LOG_DBG("Unsupported power state %u", info.state); LOG_DBG("Unsupported power state %u", info->state);
break; break;
} }
LOG_DBG("SoC leaving power state %d", info.state); LOG_DBG("SoC leaving power state %d", info->state);
} }
/* Handle SOC specific activity after Low Power Mode Exit */ /* Handle SOC specific activity after Low Power Mode Exit */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
/* /*
* System is now in active mode. Reenable interrupts which were disabled * System is now in active mode. Reenable interrupts which were disabled

View file

@ -17,9 +17,9 @@ static void ite_power_soc_deep_doze(void)
} }
/* Invoke Low Power/System Off specific Tasks */ /* Invoke Low Power/System Off specific Tasks */
__weak void pm_power_state_set(struct pm_state_info info) __weak void pm_power_state_set(struct pm_state_info *info)
{ {
switch (info.state) { switch (info->state) {
/* Deep doze mode */ /* Deep doze mode */
case PM_STATE_STANDBY: case PM_STATE_STANDBY:
ite_power_soc_deep_doze(); ite_power_soc_deep_doze();
@ -30,7 +30,7 @@ __weak void pm_power_state_set(struct pm_state_info info)
} }
/* Handle SOC specific activity after Low Power Mode Exit */ /* Handle SOC specific activity after Low Power Mode Exit */
__weak void pm_power_state_exit_post_ops(struct pm_state_info info) __weak void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
ARG_UNUSED(info); ARG_UNUSED(info);
} }

View file

@ -102,10 +102,10 @@ static void pm_resume_devices(void)
} }
#endif /* CONFIG_PM_DEVICE */ #endif /* CONFIG_PM_DEVICE */
static inline void exit_pos_ops(struct pm_state_info info) static inline void exit_pos_ops(struct pm_state_info *info)
{ {
extern __weak void extern __weak void
pm_power_state_exit_post_ops(struct pm_state_info info); pm_power_state_exit_post_ops(struct pm_state_info *info);
if (pm_power_state_exit_post_ops != NULL) { if (pm_power_state_exit_post_ops != NULL) {
pm_power_state_exit_post_ops(info); pm_power_state_exit_post_ops(info);
@ -121,10 +121,10 @@ static inline void exit_pos_ops(struct pm_state_info info)
} }
} }
static inline void pm_state_set(struct pm_state_info info) static inline void pm_state_set(struct pm_state_info *info)
{ {
extern __weak void extern __weak void
pm_power_state_set(struct pm_state_info info); pm_power_state_set(struct pm_state_info *info);
if (pm_power_state_set != NULL) { if (pm_power_state_set != NULL) {
pm_power_state_set(info); pm_power_state_set(info);
@ -173,23 +173,23 @@ void pm_system_resume(void)
* and it may schedule another thread. * and it may schedule another thread.
*/ */
if (atomic_test_and_clear_bit(z_post_ops_required, id)) { if (atomic_test_and_clear_bit(z_post_ops_required, id)) {
exit_pos_ops(z_cpus_pm_state[id]); exit_pos_ops(&z_cpus_pm_state[id]);
pm_state_notify(false); pm_state_notify(false);
z_cpus_pm_state[id] = (struct pm_state_info){PM_STATE_ACTIVE, z_cpus_pm_state[id] = (struct pm_state_info){PM_STATE_ACTIVE,
0, 0}; 0, 0};
} }
} }
bool pm_power_state_force(uint8_t cpu, struct pm_state_info info) bool pm_power_state_force(uint8_t cpu, const struct pm_state_info *info)
{ {
bool ret = false; bool ret = false;
__ASSERT(info.state < PM_STATE_COUNT, __ASSERT(info->state < PM_STATE_COUNT,
"Invalid power state %d!", info.state); "Invalid power state %d!", info->state);
if (!atomic_test_and_set_bit(z_cpus_pm_state_forced, cpu)) { if (!atomic_test_and_set_bit(z_cpus_pm_state_forced, cpu)) {
z_cpus_pm_state[cpu] = info; z_cpus_pm_state[cpu] = *info;
ret = true; ret = true;
} }
@ -261,7 +261,7 @@ bool pm_system_suspend(int32_t ticks)
/* Enter power state */ /* Enter power state */
pm_state_notify(true); pm_state_notify(true);
atomic_set_bit(z_post_ops_required, id); atomic_set_bit(z_post_ops_required, id);
pm_state_set(z_cpus_pm_state[id]); pm_state_set(&z_cpus_pm_state[id]);
pm_stats_stop(); pm_stats_stop();
/* Wake up sequence starts here */ /* Wake up sequence starts here */
@ -303,7 +303,7 @@ int pm_notifier_unregister(struct pm_notifier *notifier)
return ret; return ret;
} }
struct pm_state_info pm_power_state_next_get(uint8_t cpu) const struct pm_state_info *pm_power_state_next_get(uint8_t cpu)
{ {
return z_cpus_pm_state[cpu]; return &z_cpus_pm_state[cpu];
} }

View file

@ -16,7 +16,7 @@ static const struct device *dev;
static uint8_t sleep_count; static uint8_t sleep_count;
void pm_power_state_set(struct pm_state_info info) void pm_power_state_set(struct pm_state_info *info)
{ {
ARG_UNUSED(info); ARG_UNUSED(info);
@ -28,7 +28,7 @@ void pm_power_state_set(struct pm_state_info info)
* Devices are suspended before SoC on PM_STATE_SUSPEND_TO_RAM, that is why * Devices are suspended before SoC on PM_STATE_SUSPEND_TO_RAM, that is why
* we can check the device state here. * we can check the device state here.
*/ */
zassert_equal(info.state, PM_STATE_SUSPEND_TO_RAM, "Wrong system state"); zassert_equal(info->state, PM_STATE_SUSPEND_TO_RAM, "Wrong system state");
(void)pm_device_state_get(dev, &state); (void)pm_device_state_get(dev, &state);
zassert_equal(state, PM_DEVICE_STATE_SUSPENDED, "Wrong device state"); zassert_equal(state, PM_DEVICE_STATE_SUSPENDED, "Wrong device state");
@ -39,7 +39,7 @@ void pm_power_state_set(struct pm_state_info info)
(void)pm_device_wakeup_enable((struct device *)dev, true); (void)pm_device_wakeup_enable((struct device *)dev, true);
break; break;
case 2: case 2:
zassert_equal(info.state, PM_STATE_SUSPEND_TO_RAM, "Wrong system state"); zassert_equal(info->state, PM_STATE_SUSPEND_TO_RAM, "Wrong system state");
/* Second time this function is called, the system is asked to standby /* Second time this function is called, the system is asked to standby
* and devices were suspended. * and devices were suspended.
@ -52,7 +52,7 @@ void pm_power_state_set(struct pm_state_info info)
} }
} }
void pm_power_state_exit_post_ops(struct pm_state_info info) void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
irq_unlock(0); irq_unlock(0);
} }

View file

@ -141,7 +141,7 @@ DEVICE_DT_DEFINE(DT_INST(2, test_device_pm), device_init,
void pm_power_state_set(struct pm_state_info info) void pm_power_state_set(struct pm_state_info *info)
{ {
enum pm_device_state device_power_state; enum pm_device_state device_power_state;
@ -185,11 +185,11 @@ void pm_power_state_set(struct pm_state_info info)
/* this function is called when system entering low power state, so /* this function is called when system entering low power state, so
* parameter state should not be PM_STATE_ACTIVE * parameter state should not be PM_STATE_ACTIVE
*/ */
zassert_false(info.state == PM_STATE_ACTIVE, zassert_false(info->state == PM_STATE_ACTIVE,
"Entering low power state with a wrong parameter"); "Entering low power state with a wrong parameter");
} }
void pm_power_state_exit_post_ops(struct pm_state_info info) void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
/* pm_system_suspend is entered with irq locked /* pm_system_suspend is entered with irq locked
* unlock irq before leave pm_system_suspend * unlock irq before leave pm_system_suspend

View file

@ -30,21 +30,21 @@ BUILD_ASSERT(CONFIG_MP_NUM_CPUS == 2, "Invalid number of cpus");
static enum pm_state state_testing[2]; static enum pm_state state_testing[2];
void pm_power_state_set(struct pm_state_info info) void pm_power_state_set(struct pm_state_info *info)
{ {
switch (state_testing[_current_cpu->id]) { switch (state_testing[_current_cpu->id]) {
case PM_STATE_ACTIVE: case PM_STATE_ACTIVE:
zassert_equal(PM_STATE_ACTIVE, info.state, NULL); zassert_equal(PM_STATE_ACTIVE, info->state, NULL);
break; break;
case PM_STATE_RUNTIME_IDLE: case PM_STATE_RUNTIME_IDLE:
zassert_equal(PM_STATE_RUNTIME_IDLE, info.state, NULL); zassert_equal(PM_STATE_RUNTIME_IDLE, info->state, NULL);
break; break;
case PM_STATE_SUSPEND_TO_IDLE: case PM_STATE_SUSPEND_TO_IDLE:
zassert_equal(PM_STATE_SUSPEND_TO_IDLE, info.state, NULL); zassert_equal(PM_STATE_SUSPEND_TO_IDLE, info->state, NULL);
break; break;
case PM_STATE_STANDBY: case PM_STATE_STANDBY:
zassert_equal(_current_cpu->id, 1U, NULL); zassert_equal(_current_cpu->id, 1U, NULL);
zassert_equal(PM_STATE_STANDBY, info.state, NULL); zassert_equal(PM_STATE_STANDBY, info->state, NULL);
break; break;
default: default:
zassert_unreachable(NULL); zassert_unreachable(NULL);
@ -52,7 +52,7 @@ void pm_power_state_set(struct pm_state_info info)
} }
} }
void pm_power_state_exit_post_ops(struct pm_state_info info) void pm_power_state_exit_post_ops(struct pm_state_info *info)
{ {
/* pm_system_suspend is entered with irq locked /* pm_system_suspend is entered with irq locked
* unlock irq before leave pm_system_suspend * unlock irq before leave pm_system_suspend