From: Mike Looijmans <mike.looijmans@topic.nl>
To: Mark Brown <broonie@kernel.org>
Cc: linux-kernel@vger.kernel.org, Liam Girdwood <lgirdwood@gmail.com>,
Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Subject: Re: [PATCH 2/2] regulator: pwm-regulator: Revert "Add validity checks in continuous .get_voltage"
Date: Mon, 9 Nov 2026 07:22:26 +0100 [thread overview]
Message-ID: <d5f544e7-fe67-4e70-bb4b-9e106c0f3c57@topic.nl> (raw)
In-Reply-To: <6c74f007-5a18-4a4c-90b8-df2f3cc3b36a@sirena.org.uk>
On 08-11-2026 16:13, Mark Brown wrote:
> On Fri, Nov 06, 2026 at 01:59:56PM +0100, Mike Looijmans wrote:
>> This reverts commit c92688cac239 ("regulator: pwm-regulator: Add validity
>> checks in continuous .get_voltage").
>> The core, and in particular the machine_constraints_voltage() method,
>> expects the regulator to report what the current setting is, even if that
>> is outside the allowed range. The core will then bring the voltage into
>> that range. It cannot do that if the regulator refuses to return its
>> setting, and causes probe() to fail for a pwm-regulator when it has
>> restrictions to the PWM range with messages like:
>> dsp7-pwm: failed to get the current voltage: -ENOTRECOVERABLE
>> pwm-regulator dsp7-supply-pwm: error -ENOTRECOVERABLE: Failed to register
>> regulator pwm-regulator
>> pwm-regulator dsp7-supply-pwm: probe with driver pwm-regulator failed
>> with error -131
> Are you sure? We have specific handling for -ENOTRECOVERABLE which just
> blindly writes in the range specified in the constraints if the current
> voltage is unreadable. If that mechanism isn't working we should fix it
> rather than changing drivers.
In core.c:
if (current_uV == -ENOTRECOVERABLE) {
/* This regulator can't be read and must be initialized */
rdev_info(rdev, "Setting %d-%duV\n",
rdev->constraints->min_uV,
rdev->constraints->max_uV);
_regulator_do_set_voltage(rdev,
rdev->constraints->min_uV,
rdev->constraints->max_uV);
current_uV = regulator_get_voltage_rdev(rdev);
}
if (current_uV < 0) {
if (current_uV != -EPROBE_DEFER)
rdev_err(rdev,
"failed to get the current voltage: %pe\n",
ERR_PTR(current_uV));
return current_uV;
}
After _regulator_do_set_voltage() it calls regulator_get_voltage_rdev()
again, which keeps returning -ENOTRECOVERABLE, and thus the error path
kicks in.
>
>> Besides that, regulator_get_voltage() is not supposed to return any
>> state information, as is mentioned in the API documentation.
>> voltage = pwm_get_relative_duty_cycle(&pstate, duty_unit);
>> - if (voltage < min(max_uV_duty, min_uV_duty) ||
>> - voltage > max(max_uV_duty, min_uV_duty))
>> - return -ENOTRECOVERABLE;
> The rest of the function relies on this to avoid having to deal with
> wrapping when things are out of range.
It's core.c that will handle that. It expects regulator_get_voltage() to
return something out of range, and will correct that situation.
--
Mike Looijmans
System Expert
TOPIC Embedded Products B.V.
Materiaalweg 4, 5681 RJ Best
The Netherlands
T: +31 (0) 499 33 69 69
E: mike.looijmans@topic.nl
W: www.topic.nl
next prev parent reply other threads:[~2026-11-09 6:22 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1b153bce-a66a-45ee-a5c6-963ea6fb1c82.949ef384-8293-46b8-903f-40a477c056ae.44efb263-5265-4fae-9cff-e8eaefbc0afd@emailsignatures365.codetwo.com>
2026-11-06 12:59 ` [PATCH 1/2] regulator: pwm-regulator: Revert "Calculate the output voltage for disabled PWMs" Mike Looijmans
[not found] ` <1b153bce-a66a-45ee-a5c6-963ea6fb1c82.949ef384-8293-46b8-903f-40a477c056ae.6954786b-65e0-4206-a0c4-60cd251dbec9@emailsignatures365.codetwo.com>
2026-11-06 12:59 ` [PATCH 2/2] regulator: pwm-regulator: Revert "Add validity checks in continuous .get_voltage" Mike Looijmans
2026-11-06 13:37 ` Mark Brown
2026-11-06 21:45 ` Martin Blumenstingl
2026-11-07 12:25 ` Mark Brown
2026-11-09 6:34 ` Mike Looijmans
2026-11-08 15:13 ` Mark Brown
2026-11-09 6:22 ` Mike Looijmans [this message]
2026-11-06 13:36 ` [PATCH 1/2] regulator: pwm-regulator: Revert "Calculate the output voltage for disabled PWMs" Mark Brown
2026-11-06 13:56 ` Mike Looijmans
2026-11-06 21:57 ` Martin Blumenstingl
2026-11-09 6:09 ` Mike Looijmans
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d5f544e7-fe67-4e70-bb4b-9e106c0f3c57@topic.nl \
--to=mike.looijmans@topic.nl \
--cc=broonie@kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=martin.blumenstingl@googlemail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®