MLK-23562: regulator: core: adjust supply voltage in bypass
Take account of bypass case where min_dropout_uV is 0 to adjust external supply voltage correctly, otherwise, external pmic voltage will never be in ldo bypass mode. Signed-off-by: Robin Gong <yibin.gong@nxp.com> Reviewed-by: Anson Huang <Anson.Huang@nxp.com>5.4-rM2-2.2.x-imx-squashed
parent
e169cf3592
commit
ed6597132c
|
@ -3334,6 +3334,16 @@ static int _regulator_do_set_suspend_voltage(struct regulator_dev *rdev,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool _regulator_is_bypass(struct regulator_dev *rdev)
|
||||||
|
{
|
||||||
|
bool bypassed = false;
|
||||||
|
|
||||||
|
if (rdev->desc->ops->get_bypass)
|
||||||
|
rdev->desc->ops->get_bypass(rdev, &bypassed);
|
||||||
|
|
||||||
|
return bypassed;
|
||||||
|
}
|
||||||
|
|
||||||
static int regulator_set_voltage_unlocked(struct regulator *regulator,
|
static int regulator_set_voltage_unlocked(struct regulator *regulator,
|
||||||
int min_uV, int max_uV,
|
int min_uV, int max_uV,
|
||||||
suspend_state_t state)
|
suspend_state_t state)
|
||||||
|
@ -3403,8 +3413,9 @@ int regulator_set_voltage_rdev(struct regulator_dev *rdev, int min_uV,
|
||||||
if (rdev->supply &&
|
if (rdev->supply &&
|
||||||
regulator_ops_is_valid(rdev->supply->rdev,
|
regulator_ops_is_valid(rdev->supply->rdev,
|
||||||
REGULATOR_CHANGE_VOLTAGE) &&
|
REGULATOR_CHANGE_VOLTAGE) &&
|
||||||
(rdev->desc->min_dropout_uV || !(rdev->desc->ops->get_voltage ||
|
(_regulator_is_bypass(rdev) || rdev->desc->min_dropout_uV ||
|
||||||
rdev->desc->ops->get_voltage_sel))) {
|
!(rdev->desc->ops->get_voltage ||
|
||||||
|
rdev->desc->ops->get_voltage_sel))) {
|
||||||
int current_supply_uV;
|
int current_supply_uV;
|
||||||
int selector;
|
int selector;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue