linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Harald Geyer <harald@ccbib.org>
To: Mark Brown <broonie@kernel.org>
Cc: Liam Girdwood <lgirdwood@gmail.com>, linux-kernel@vger.kernel.org
Subject: Re: Question about regulator API
Date: Fri, 16 Dec 2016 23:00:35 +0100	[thread overview]
Message-ID: <E1cI0YN-0000LW-8z@stardust.g4.wien.funkfeuer.at> (raw)
In-Reply-To: <20161216165348.mha6d3faucxdript@sirena.org.uk>

Mark Brown writes:
> On Fri, Dec 16, 2016 at 02:41:42PM +0100, Harald Geyer wrote:
> > Mark Brown writes:
> > > On Wed, Dec 14, 2016 at 03:52:54PM +0100, Harald Geyer wrote:
> 
> > > This doesn't feel like a regulator API problem exactly, a lot of what
> > > you're talking about here seems like you really need the devices to
> > > coopereate with each other and know what they're doing in order to work
> > > well together.
> 
> > I was hoping, that I somehow could get the necessary coordination from
> > the regulator framework. If the best I can get ATM is notifications, then
> > I'll try it and see what kind of code falls out of this.

Ok, tried that and it turns out there is no notification at
regulator_enable() ATM. I guess you'd merge a patch that added this
notification?

> > It still seems a bit of a limitation to me, that the only way to really
> > switch off a regulator is with regulator_force_disable(), which is quite
> > a hard hammer.
> 
> I really have no idea what sort of communication you're envisaging here
> - powering supplies down when other devices are trying to use them is a
> really serious thing with very substantial consequences for userspace,

Sure, this is why regulator_force_disable() is the wrong tool for the job.
I was more looking for something (call it regulator_shutdown()) that
* blocked until the regulator is actually off
* made all calls to regulator_enable() from other consumers block (or fail)
* maybe sent notifications to consumers, so that they have a chance to
  cooperate and call regulator_disable() at their earliest convenience.
* was undone by a call to either regulator_disable() or regulator_enable()
  from the consumer that initially called regulator_shutdown()

I haven't explored this in detail - maybe there are good reasons not to
have it.

As a convenience API there could be something like regulator_enable_wait()
(mirrored by regulator_shutdown_wait()) to avoid having identical
notification callbacks and timers in every consumer device. Of course this
would require adding timing information to struct regulator. If nobody
besides me has any use for that code, then maybe it's not a good idea.

> if the devices aren't cooperating at a level higher than the regulator
> API level it's unlikely to go well.

The devices would need to cooperate in the sense, that they call
regulator_disable() whenever they don't strictly need the supply, so that
regulator_shutdown() won't block forever, of course. But this is a good
idea, in terms of energy saving, anyway. The devices wouldn't need to
know the (timing) constraints of other consumers of the same supply - so
it's no hard cooperation.

  reply	other threads:[~2016-12-16 22:01 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-14 14:52 Question about regulator API Harald Geyer
2016-12-14 18:14 ` Mark Brown
2016-12-16 13:41   ` Harald Geyer
2016-12-16 16:53     ` Mark Brown
2016-12-16 22:00       ` Harald Geyer [this message]
2016-12-19 11:09         ` Mark Brown

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=E1cI0YN-0000LW-8z@stardust.g4.wien.funkfeuer.at \
    --to=harald@ccbib.org \
    --cc=broonie@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    /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;
as well as URLs for NNTP newsgroup(s).