linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Viresh Kumar <viresh.kumar@linaro.org>
To: Mark Brown <broonie@kernel.org>
Cc: Rafael Wysocki <rjw@rjwysocki.net>,
	nm@ti.com, sboyd@codeaurora.org, linaro-kernel@lists.linaro.org,
	linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
	Vincent Guittot <vincent.guittot@linaro.org>,
	robh@kernel.org, d-gerlach@ti.com
Subject: Re: [PATCH V3 0/9] PM / OPP: Multiple regulator support
Date: Thu, 24 Nov 2016 10:37:24 +0530	[thread overview]
Message-ID: <20161124050724.GD9376@vireshk-i7> (raw)
In-Reply-To: <20161123122959.r262pkvhx4zj6c7p@sirena.org.uk>

Hi Mark,

On 23-11-16, 12:29, Mark Brown wrote:
> On Wed, Nov 23, 2016 at 09:16:57AM +0530, Viresh Kumar wrote:
> > Are you saying that:
> 
> > "we don't need to identify which microVolts value in the OPP table corresponds
> > to which supply from the DT itself and we can do that with some hard coded
> > stuff" ?
> 
> No, of course not.  That would be completely incoherent, there would be
> no way for anything to use the data if the values can just be in any
> random order.

With the current implementation in this patchset, the order in which entries are
present in the OPP node is _assumed_ to be known to the platform specific code,
which will pass it on to the OPP core with some callbacks. So the order will not
be completely random.

> > If yes, then below is from an earlier email from you, which I feel is opposite
> > of what you are suggesting now.
> 
> > > That *really* should be in the binding.  Honestly if the binding is this
> > > vague I'm not even clear that it's worth documenting these properties at
> > > this level, might be better to just put the documentation in the
> > > platform driver bindings.
> 
> The "platform driver bindings" bit of this is very important here.  This
> is a generic binding that is going to be used by platform specific
> drivers (as I understand it).

There is no platform specific binding here.

For example in case of a single regulator for the device (CPU), the platform
specific DT file contains the CPU nodes (using generic bindings) and an OPP
table node (again generic bindings only). The OPP core reads both these nodes
for the device and constructs the OPP table.

Now in case of multiple regulators for the device, as you already know, the only
unanswered detail (apart from the order in which the regulators need to be
programmed) is to link which entries in the OPP table are for which regulator.

We can either get this information from DT (somehow) or hardcode it in platform
specific code. This patch provided infrastructure for the later one.

If we indeed want to get this information from the DT then there are two
options:

- Create platform specific binding:

  foo-platform,supply-names = "vcc0", "vcc1", "vcc2";

- Create common binding that can be used by all platforms:

  supply-names = "vcc0", "vcc1", "vcc2";


Such bindings will end up either in the consumer device node (like CPU0 node) or
in the OPP table itself. I am personally inclined towards the common
supply-names bindings, otherwise every user platform will end up creating very
similar bindings.

> I would therefore expect that these
> things can be described in the platform specific bindings.
> 
> Please, take a step back and think about what what the binding means and
> how it's going to be used.  Not only is this a DT binding and therefore
> an ABI it's also a generic binding that's going to affect a lot of
> systems probably for a long time.  This means it is really important to
> think things through and make sure we understand what they're doing.
> When working on kernel internal code it's relatively easy to fix things
> if we realize later that they don't work well so it's easier to just
> work quickly but when we're making ABIs that's not possible.

I agree and I completely understand your concerns here and it is surely very
important to get the bindings right as they will last for very long.

But I am still unsure about what's the best way of doing this. The new bindings
are rejected by almost everyone as they contain some of the information already
contained in the consumer node while the regulators are defined.

-- 
viresh

  reply	other threads:[~2016-11-24  5:07 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-26  6:32 [PATCH V3 0/9] PM / OPP: Multiple regulator support Viresh Kumar
2016-10-26  6:32 ` [PATCH V3 1/9] PM / OPP: Reword binding supporting multiple regulators per device Viresh Kumar
2016-11-09 14:58   ` Mark Brown
2016-11-10  4:04     ` Viresh Kumar
2016-11-10 16:36       ` Mark Brown
2016-11-10 18:09         ` Viresh Kumar
2016-11-10 22:51           ` Stephen Boyd
2016-11-11  3:11             ` Viresh Kumar
2016-11-15  1:59               ` Rob Herring
2016-11-15  2:13                 ` Stephen Boyd
2016-11-15  3:31                   ` Viresh Kumar
2016-11-15 18:56                     ` Stephen Boyd
2016-11-15 22:11                       ` Dave Gerlach
2016-11-16  3:18                         ` Viresh Kumar
     [not found]                       ` <20161115185645.GA25626-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2016-11-16  3:08                         ` Viresh Kumar
2016-10-26  6:32 ` [PATCH V3 2/9] PM / OPP: Don't use OPP structure outside of rcu protected section Viresh Kumar
2016-10-26  6:32 ` [PATCH V3 3/9] PM / OPP: Manage supply's voltage/current in a separate structure Viresh Kumar
2016-10-26  6:32 ` [PATCH V3 4/9] PM / OPP: Pass struct dev_pm_opp_supply to _set_opp_voltage() Viresh Kumar
2016-10-26  6:33 ` [PATCH V3 5/9] PM / OPP: Add infrastructure to manage multiple regulators Viresh Kumar
2016-10-26  6:33 ` [PATCH V3 6/9] PM / OPP: Separate out _generic_opp_set_rate() Viresh Kumar
2016-10-26  6:33 ` [PATCH V3 7/9] PM / OPP: Allow platform specific custom set_opp() callbacks Viresh Kumar
2016-10-26  6:33 ` [PATCH V3 8/9] PM / OPP: Don't WARN on multiple calls to dev_pm_opp_set_regulators() Viresh Kumar
2016-10-26  6:33 ` [PATCH V3 9/9] PM / OPP: Don't assume platform doesn't have regulators Viresh Kumar
2016-11-10  1:17   ` Stephen Boyd
2016-11-10  5:16     ` [PATCH V4 " Viresh Kumar
2016-11-02  4:51 ` [PATCH V3 0/9] PM / OPP: Multiple regulator support Viresh Kumar
2016-11-10  1:19   ` Stephen Boyd
2016-11-10  4:11     ` Viresh Kumar
2016-11-15 22:10 ` [TEST PATCH] WIP: Test OPP multi regulator support with ti-opp-domain driver Dave Gerlach
2016-11-16  1:38   ` kbuild test robot
2016-11-16  2:01   ` kbuild test robot
2016-11-16  3:27   ` Viresh Kumar
2016-11-18  3:06 ` [PATCH V3 0/9] PM / OPP: Multiple regulator support Viresh Kumar
2016-11-18 10:43   ` Mark Brown
2016-11-22  3:49     ` Viresh Kumar
2016-11-22 18:41       ` Mark Brown
2016-11-23  3:46         ` Viresh Kumar
2016-11-23 12:29           ` Mark Brown
2016-11-24  5:07             ` Viresh Kumar [this message]
2016-11-24 10:19               ` 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=20161124050724.GD9376@vireshk-i7 \
    --to=viresh.kumar@linaro.org \
    --cc=broonie@kernel.org \
    --cc=d-gerlach@ti.com \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=nm@ti.com \
    --cc=rjw@rjwysocki.net \
    --cc=robh@kernel.org \
    --cc=sboyd@codeaurora.org \
    --cc=vincent.guittot@linaro.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).