Commit 351fd170 authored by Flavio Ceolin's avatar Flavio Ceolin Committed by Christopher Friedt
Browse files

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: default avatarFlavio Ceolin <flavio.ceolin@intel.com>
parent 8beb3423
Loading
Loading
Loading
Loading
+50 −0
Original line number Diff line number Diff line
@@ -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);