diff options
author | Mark Brown <broonie@linaro.org> | 2013-09-30 12:04:32 +0100 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-09-30 12:04:32 +0100 |
commit | 0f5da28f93fb847a0aa64d359d46b99c73cd1d6e (patch) | |
tree | 5778eb2368d7b09528783caf9c1e4821894a46b4 | |
parent | 780a0ff76e9527fe7c784aa7250dcfc449560535 (diff) | |
parent | bf00ca35cec8f0894dcfd90f88b03af1d5c7b86f (diff) |
Merge remote-tracking branch 'regulator/fix/ti-abb' into regulator-linus
-rw-r--r-- | drivers/regulator/ti-abb-regulator.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/regulator/ti-abb-regulator.c b/drivers/regulator/ti-abb-regulator.c index d8e3e1262bc2..20c271d49dcb 100644 --- a/drivers/regulator/ti-abb-regulator.c +++ b/drivers/regulator/ti-abb-regulator.c @@ -279,8 +279,12 @@ static int ti_abb_set_opp(struct regulator_dev *rdev, struct ti_abb *abb, ti_abb_rmw(regs->opp_sel_mask, info->opp_sel, regs->control_reg, abb->base); - /* program LDO VBB vset override if needed */ - if (abb->ldo_base) + /* + * program LDO VBB vset override if needed for !bypass mode + * XXX: Do not switch sequence - for !bypass, LDO override reset *must* + * be performed *before* switch to bias mode else VBB glitches. + */ + if (abb->ldo_base && info->opp_sel != TI_ABB_NOMINAL_OPP) ti_abb_program_ldovbb(dev, abb, info); /* Initiate ABB ldo change */ @@ -295,6 +299,14 @@ static int ti_abb_set_opp(struct regulator_dev *rdev, struct ti_abb *abb, if (ret) goto out; + /* + * Reset LDO VBB vset override bypass mode + * XXX: Do not switch sequence - for bypass, LDO override reset *must* + * be performed *after* switch to bypass else VBB glitches. + */ + if (abb->ldo_base && info->opp_sel == TI_ABB_NOMINAL_OPP) + ti_abb_program_ldovbb(dev, abb, info); + out: return ret; } |