예제 #1
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		pwrdm54xx_target_logic_ret_state_get
 * @BRIEF		return logic target state for this power domain when
 *			domain is RET
 * @RETURNS		power domain logic state when domain is RET:
 *			PWRDM_OFF_STATE or PWRDM_RET_STATE
 *			PWRDM_STATE_MAX in case of error
 * @param[in]		id: valid power domain ID
 * @DESCRIPTION		return logic target state for this power domain when
 *			domain is RET
 *//*------------------------------------------------------------------------ */
pwrdm_state pwrdm54xx_target_logic_ret_state_get(pwrdm54xx_id id)
{
	reg *pm_pwrstctrl;

	if (!cpu_is_omap54xx()) {
		fprintf(stderr, "%s(): CPU != 54XX\n", __func__);
		return PWRDM_STATE_MAX;
	}
	CHECK_ARG_LESS_THAN(id, PWRDM54XX_ID_MAX, PWRDM_STATE_MAX);

	if (!pwrdm54xx_has_logic_ret_state_ctrl_bit(id))
		return PWRDM_STATE_MAX;

	/* Retrieve PM_xyz_PWRSTCTRL pointer */
	pm_pwrstctrl = pwrdm54xx_pwrstctrl_reg_get(id);
	if (pm_pwrstctrl == NULL)
		return PWRDM_STATE_MAX;
	else
		/* Retrieve logic target state */
		return pwrdm_target_logic_ret_state_get(pm_pwrstctrl);
}
예제 #2
0
/* ------------------------------------------------------------------------*//**
 * @FUNCTION		powerdm_target_logic_ret_state_get
 * @BRIEF		return the programmed target logic retention state
 *			of a given power domain
 * @RETURNS		programmed target logic retention state on success
 *			PWRDM_STATE_MAX in case of error
 * @param[in]		powerdm: power domain name
 * @DESCRIPTION		return the programmed target logic retention state
 *			of a given power domain
 *//*------------------------------------------------------------------------ */
pwrdm_state powerdm_target_logic_ret_state_get(const char *powerdm)
{
	reg *pm_pwrstctrl;
	pwrdm_state state;

	CHECK_NULL_ARG(powerdm, PWRDM_STATE_MAX);

	if (!powerdm_has_logic_ret_state_ctrl_bit(powerdm)) {
		dprintf("%s(%s): domain doesn't have RET state control bit.\n",
			__func__, powerdm);
		return PWRDM_STATE_MAX;
	}

	pm_pwrstctrl = powerdm_pwrstctrl_reg_get(powerdm);
	if (pm_pwrstctrl == NULL) {
		dprintf("%s(%s): PM_PWRSTCTRL==NULL!\n", __func__, powerdm);
		return PWRDM_STATE_MAX;
	}

	state = pwrdm_target_logic_ret_state_get(pm_pwrstctrl);
	dprintf("%s(%s) = %s\n", __func__, powerdm,
		pwrdm_state_name_get(state));
	return state;
}