pm: cc13x2_cc26x2: Implement their own constraint

TI Hal has its own constraint API that is used by its drivers. These
constraints need to be correlated with Zephyr constraints to be
constraints set in the HAL be visible on Zephyr and vice-versa.

Fixes #38362

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
This commit is contained in:
Flavio Ceolin 2021-09-08 17:00:37 -07:00 committed by Christopher Friedt
commit 351fd170bd

View file

@ -182,5 +182,55 @@ void PowerCC26XX_schedulerRestore(void)
*/
}
/* Constraint API hooks */
void pm_constraint_set(enum pm_state state)
{
switch (state) {
case PM_STATE_RUNTIME_IDLE:
Power_setConstraint(PowerCC26XX_DISALLOW_IDLE);
break;
case PM_STATE_STANDBY:
Power_setConstraint(PowerCC26XX_DISALLOW_STANDBY);
break;
default:
break;
}
}
void pm_constraint_release(enum pm_state state)
{
switch (state) {
case PM_STATE_RUNTIME_IDLE:
Power_releaseConstraint(PowerCC26XX_DISALLOW_IDLE);
break;
case PM_STATE_STANDBY:
Power_releaseConstraint(PowerCC26XX_DISALLOW_STANDBY);
break;
default:
break;
}
}
bool pm_constraint_get(enum pm_state state)
{
bool ret = true;
uint32_t constraints;
constraints = Power_getConstraintMask();
switch (state) {
case PM_STATE_RUNTIME_IDLE:
ret = (constraints & (1 << PowerCC26XX_DISALLOW_IDLE)) == 0;
break;
case PM_STATE_STANDBY:
ret = (constraints & (1 << PowerCC26XX_DISALLOW_STANDBY)) == 0;
break;
default:
break;
}
return ret;
}
SYS_INIT(power_initialize, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
SYS_INIT(unlatch_pins, POST_KERNEL, CONFIG_APPLICATION_INIT_PRIORITY);