Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 19280e40 authored by Axel Lin's avatar Axel Lin Committed by Mark Brown
Browse files

regulator: core: Fix continuous_voltage_range case in regulator_can_change_voltage



Regulator drivers with continuous_voltage_range flag set allows not setting
n_voltages. Thus if continuous_voltage_range is set, check the constraint range
instead.

Signed-off-by: default avatarAxel Lin <axel.lin@ingics.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent a49f0d1e
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -1885,10 +1885,16 @@ int regulator_can_change_voltage(struct regulator *regulator)
	struct regulator_dev	*rdev = regulator->rdev;

	if (rdev->constraints &&
	    rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE &&
	    (rdev->desc->n_voltages - rdev->desc->linear_min_sel) > 1)
	    (rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) {
		if (rdev->desc->n_voltages - rdev->desc->linear_min_sel > 1)
			return 1;

		if (rdev->desc->continuous_voltage_range &&
		    rdev->constraints->min_uV && rdev->constraints->max_uV &&
		    rdev->constraints->min_uV != rdev->constraints->max_uV)
			return 1;
	}

	return 0;
}
EXPORT_SYMBOL_GPL(regulator_can_change_voltage);