/* Read-modify-write a register in PRM. Caller must lock */ u32 am33xx_prm_rmw_reg_bits(u32 mask, u32 bits, s16 inst, s16 idx) { u32 v; v = am33xx_prm_read_reg(inst, idx); v &= ~mask; v |= bits; am33xx_prm_write_reg(v, inst, idx); return v; }
static void am33xx_pwrdm_restore_context(struct powerdomain *pwrdm) { int st, ctrl; st = am33xx_prm_read_reg(pwrdm->prcm_offs, pwrdm->pwrstst_offs); am33xx_prm_write_reg(pwrdm->context, pwrdm->prcm_offs, pwrdm->pwrstctrl_offs); /* Make sure we only wait for a transition if there is one */ st &= OMAP_POWERSTATEST_MASK; ctrl = OMAP_POWERSTATEST_MASK & pwrdm->context; if (st != ctrl) am33xx_pwrdm_wait_transition(pwrdm); }
static void am33xx_pwrdm_restore_context(struct powerdomain *pwrdm) { am33xx_prm_write_reg(pwrdm->context, pwrdm->prcm_offs, pwrdm->pwrstctrl_offs); am33xx_pwrdm_wait_transition(pwrdm); }