[PATCH 3/9] regulator: core: Try full range when adjusting regulators to constraints

Mark Brown broonie at kernel.org
Mon Aug 22 09:29:07 PDT 2016


On Sun, Aug 21, 2016 at 10:11:19AM +0800, Chen-Yu Tsai wrote:

> Currently when we try to bring regulator in bounds of its constraints,
> we pick either the minimum or maximum voltage as the target. This fails
> if the regulator range is not continuous, and the target voltage is not
> an exact value the regulator can achieve, i.e. the target is not aligned
> to the step of the regulator.

This seems like you have buggy constraints, constraints which allow
voltages that can't physically be satisfied don't make obvious sense.

> -		if (current_uV < rdev->constraints->min_uV) {
> +		if (current_uV < rdev->constraints->min_uV ||
> +		    current_uV > rdev->constraints->max_uV) {
>  			target_min = rdev->constraints->min_uV;
> -			target_max = rdev->constraints->min_uV;
> -		}
> -
> -		if (current_uV > rdev->constraints->max_uV) {
> -			target_min = rdev->constraints->max_uV;
>  			target_max = rdev->constraints->max_uV;
>  		}

This is most likely going to cause disruption to systems where the
voltage is over the constraint voltage - it will result in the voltage
being lowered to the minimum allowed which will have a much higher
chance of upsetting things.  This is why we don't just do a constraints
run.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20160822/e35014e0/attachment.sig>


More information about the linux-arm-kernel mailing list