Re: [RFC PATCH 1/4] regulator: core: Ensure the cached state matches the hardware state in regulator_set_voltage_unlocked()

From: Lad, Prabhakar
Date: Thu Jun 06 2024 - 10:22:30 EST


Hi Mark,

On Thu, Jun 6, 2024 at 1:05 PM Mark Brown <broonie@xxxxxxxxxx> wrote:
>
> On Wed, Jun 05, 2024 at 08:49:33AM +0100, Prabhakar wrote:
>
> > Driver code flow:
> > 1> set regulator to 1.8V (BIT0 = 1)
> > 2> Regulator cached state now will be 1.8V
> > 3> Now for some reason driver issues a reset to the IP block
> > which resets the registers to default value. In this process
> > the regulator is set to 3.3V (BIT0 = 0)
> > 4> Now the driver requests the regulator core to set 1.8V
>
> If something is resetting the regulator like this that's a problem in
> general, we need to either have the driver notify the core when that
> happens so it can reconfigure the regulator or have it reapply
> configuration directly. Obviously it's not great to have that happen at
> all...
>
Currently I am seeing this problem with SDHI driver. For the voltage
switch operation the MMC core requests the driver to do the change and
similarly the MMC core requests the reset operation.

> Having the core driver notify the core when that happens so it can reconfigure the regulator or have it reapply configuration directly.
Again doing this would be a problem as MMC core also maintains the IOS
states, reconfiguring the regulator would cause conflicts between the
states.

Ulf/Wolfram - please correct me if I'm wrong here.

Cheers,
Prabhakar