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

From: Mark Brown
Date: Mon Aug 22 2016 - 12:30:28 EST


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.

Attachment: signature.asc
Description: PGP signature