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

Commit 94e85a3c authored by Axel Lin's avatar Axel Lin Committed by Mark Brown
Browse files

regulator: s5m8767: Use DIV_ROUND_UP to calculate selector



Integer division may truncate the result.
Use DIV_ROUND_UP to ensure new voltage setting falls within specified range.

Also properly handle the case min_vol < desc->min to ensure we don't return
negative value for selector.

Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent b9b49af5
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -347,7 +347,10 @@ static int s5m8767_convert_voltage_to_sel(
	if (max_vol < desc->min || min_vol > desc->max)
		return -EINVAL;

	selector = (min_vol - desc->min) / desc->step;
	if (min_vol < desc->min)
		min_vol = desc->min;

	selector = DIV_ROUND_UP(min_vol - desc->min, desc->step);

	if (desc->min + desc->step * selector > max_vol)
		return -EINVAL;