[PATCH] regulator: pm8008: fix probe failure due to negative voltage selector

Kamal Wadhwa posted 1 patch 1 month, 1 week ago
There is a newer version of this series
drivers/regulator/qcom-pm8008-regulator.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] regulator: pm8008: fix probe failure due to negative voltage selector
Posted by Kamal Wadhwa 1 month, 1 week ago
In the current design, the `pm8008_regulator_get_voltage_sel()` callback
can return a negative value if the raw voltage value is read as 0 uV from
the PMIC HW register. This can cause the probe to fail when the
`machine_constraints_voltage()` check is called during the regulator
registration flow.

Fix this by using the helper `regulator_map_voltage_linear_range()` to
convert the raw value to a voltage selector inside the mentioned get
voltage selector function. This ensures that the value returned is always
within the defined range.

Signed-off-by: Kamal Wadhwa <kamal.wadhwa@oss.qualcomm.com>
---
 drivers/regulator/qcom-pm8008-regulator.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/regulator/qcom-pm8008-regulator.c b/drivers/regulator/qcom-pm8008-regulator.c
index da017c1969d0cc2c6347b68c37518ea8a7ab44a3..90c78ee1c37bf9bf69f43e0bb7798fed94590e95 100644
--- a/drivers/regulator/qcom-pm8008-regulator.c
+++ b/drivers/regulator/qcom-pm8008-regulator.c
@@ -96,7 +96,7 @@ static int pm8008_regulator_get_voltage_sel(struct regulator_dev *rdev)
 
 	uV = le16_to_cpu(val) * 1000;
 
-	return (uV - preg->desc.min_uV) / preg->desc.uV_step;
+	return regulator_map_voltage_linear_range(rdev, uV, INT_MAX);
 }
 
 static const struct regulator_ops pm8008_regulator_ops = {

---
base-commit: b9ddaa95fd283bce7041550ddbbe7e764c477110
change-id: 20250823-pm8008-negitive-selector-71646975befe

Best regards,
-- 
Kamal Wadhwa <quic_kamalw@quicinc.com>
Re: [PATCH] regulator: pm8008: fix probe failure due to negative voltage selector
Posted by Mark Brown 1 month, 1 week ago
On Sat, 23 Aug 2025 01:56:39 +0530, Kamal Wadhwa wrote:
> In the current design, the `pm8008_regulator_get_voltage_sel()` callback
> can return a negative value if the raw voltage value is read as 0 uV from
> the PMIC HW register. This can cause the probe to fail when the
> `machine_constraints_voltage()` check is called during the regulator
> registration flow.
> 
> Fix this by using the helper `regulator_map_voltage_linear_range()` to
> convert the raw value to a voltage selector inside the mentioned get
> voltage selector function. This ensures that the value returned is always
> within the defined range.
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git for-next

Thanks!

[1/1] regulator: pm8008: fix probe failure due to negative voltage selector
      commit: ef3e9c91ed87f13dba877a20569f4a0accf0612c

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark