Re: [PATCH v5 1/7] regulator: core: Add "enable and wait" functions
Chen-Yu Tsai <[email protected]>
| Newsgroups | org.infradead.lists.linux-arm-kernel,dev.linux.lists.chrome-platform,org.infradead.lists.linux-mediatek,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-i2c,org.kernel.vger.linux-input,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CAGXv+5Het3zp_OTp=_ktg+_d5Q55zkE0SwQnM7TVyJDmOdBtyA@mail.gmail.com> |
On Tue, Aug 25, 2026 at 12:33 PM Chen-Yu Tsai <[email protected]> wrote: > > In device power sequencing and initialization use cases, it is common > for the driver to enable the regulator and then wait for a certain > period of time to pass before continuing. > > In cases where the regulator supply is always on, or has been turned on > or left on by another consumer, the driver could shorten the delay or > skip it altogether, provided that enough time has already passed since > the regulator was _actually_ turned on. > > Tracking this requires support from the regulator core. Introduce a > "last turned on" timestamp field to the regulator device, and "enable > and wait" functions to the single and bulk regulator consumer APIs. > The existing "enable without wait" functions are then converted to > macros that expand to the new functions. > > The timestamp is updated each time the regulator is actually turned on. > For regulators left on by hardware default or by firmware, the core will > set the timestamp if it detects it was left on and its supply (and their > supply, and so on) is on as well. This is unfortunately best effort > only. The core can only assume a dangling regulator (one without a > supply) has power. This also applies to the dummy regulator. > > Signed-off-by: Chen-Yu Tsai <[email protected]> > --- > Changes since v4: > - Try to update last_on timestamp for regulators that were left on Sashiko flaged a few issues with the changes: - _regulator_is_enabled() called and subsequent timestamp update without lock - bulk consumer wait_us incorrectly assigned - _regulator_is_enabled() could return an error Will fix and send a new version. I probably should get a local AI review working first. ChenYu