Fixed regulators currently always end up in the return -EINVAL else branch. In Linux, the fixed regulator driver parses the DT and will populate fixed_uV if min_uv and max_uv are equal. For barebox, it's easier to do this in the core, but the result is the same: We now can call regulator_get_voltage for fixed regulators. Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> --- v2 -> v3: - fix botched rebase (regulator->ri-> instead of ri->) v1 -> v2: - new patch --- drivers/regulator/core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index 472b26f3a0ac..1c7a8580d983 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -593,6 +593,8 @@ int regulator_get_voltage(struct regulator *regulator) ret = rdev->desc->ops->list_voltage(rdev, 0); } else if (rdev->desc->fixed_uV && (rdev->desc->n_voltages == 1)) { ret = rdev->desc->fixed_uV; + } else if (regulator->ri->min_uv == regulator->ri->max_uv) { + ret = regulator->ri->min_uv; } else { return -EINVAL; } -- 2.30.2