Regulators in suspend

Balaji Rao balajirrao at openmoko.org
Mon Dec 1 12:49:09 CET 2008


On Mon, Dec 01, 2008 at 11:35:53AM +0000, Andy Green wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hi -
>
> I noticed something about the regulator stuff last night when dealing
> with suspend on the pm_bt driver.
>
> We have this kind of construct
>
> 		if (on) {
> 			if (!regulator_is_enabled(bt_data->regulator))
> 				regulator_enable(bt_data->regulator);
> 		} else {
> 			if (regulator_is_enabled(bt_data->regulator))
> 				regulator_disable(bt_data->regulator);
> 		}
>
> because the regulator stuff only wants to hear disable on enabled
> regulator and vice versa.
>

Right,

> However, regulator_is_enabled() is giving a result for the actual state
> of the regulator, via a (ops->blah)() thing, but the _enable() and
> _disable() guys are looking first at the logical state they hold about
> if they enabled or disabled the regulator.
>

ok,

> On probe and resume at the moment these two things are out of step, the
> regulator defaults to up on Qi it seems and they are wrong on resume too
> at the moment, blowing WARN_ON() stacktraces.
>

Oh, yes. We have to mark the regulators which are boot_on in the
regulator_init data in mach_gta02.c. I wanted to do it, but I forgot. I think
this should solve the problem ? But I wonder what happens during resume..
I'll see..

Andy, can you please try this out ? If it works, I'll send you a patch.

Thanks,
Balaji
>



More information about the openmoko-kernel mailing list