linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stephen Boyd <sboyd@codeaurora.org>
To: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Rob Herring <robh@kernel.org>, Mark Brown <broonie@kernel.org>,
	Rafael Wysocki <rjw@rjwysocki.net>,
	nm@ti.com, Viresh Kumar <vireshk@kernel.org>,
	linaro-kernel@lists.linaro.org, linux-pm@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Vincent Guittot <vincent.guittot@linaro.org>,
	d-gerlach@ti.com, devicetree@vger.kernel.org
Subject: Re: [PATCH V3 1/9] PM / OPP: Reword binding supporting multiple regulators per device
Date: Tue, 15 Nov 2016 10:56:45 -0800	[thread overview]
Message-ID: <20161115185645.GA25626@codeaurora.org> (raw)
In-Reply-To: <20161115033151.GG4178@vireshk-i7>

On 11/15, Viresh Kumar wrote:
> On 14-11-16, 18:13, Stephen Boyd wrote:
> > On 11/14, Rob Herring wrote:
> > > On Fri, Nov 11, 2016 at 08:41:20AM +0530, Viresh Kumar wrote:
> > > > On 10-11-16, 14:51, Stephen Boyd wrote:
> > > > > 
> > > > > No. The supply names (and also clock names/index) should be left
> > > > > up to the consumer of the OPP table. We don't want to encode any
> > > > > sort of details like this between the OPP table and the consumer
> > > > > of it in DT because then it seriously couples the OPP table to
> > > > > the consumer device. "The binding" in this case that needs to be
> > > > > updated is the consumer binding, to indicate that it correlated
> > > > > foo-supply and bar-supply to index 0 and 1 of the OPP table
> > > > > voltages.
> > > > 
> > > > Are you saying that we shall have a property like this then?
> > > > 
> > > > diff --git a/Documentation/devicetree/bindings/opp/opp.txt b/Documentation/devicetree/bindings/opp/opp.txt
> > > > index ee91cbdd95ee..733946df2fb8 100644
> > > > --- a/Documentation/devicetree/bindings/opp/opp.txt
> > > > +++ b/Documentation/devicetree/bindings/opp/opp.txt
> > > > @@ -389,7 +389,10 @@ Example 4: Handling multiple regulators
> > > >                         compatible = "arm,cortex-a7";
> > > >                         ...
> > > >  
> > > > -                       cpu-supply = <&cpu_supply0>, <&cpu_supply1>, <&cpu_supply2>;
> > > > +                       vcc0-supply = <&cpu_supply0>;
> > > > +                       vcc1-supply = <&cpu_supply1>;
> > > > +                       vcc2-supply = <&cpu_supply2>;
> > > > +                       opp-supply-names = "vcc0", "vcc1", "vcc2";
> > > 
> > > Uh, no. You already have the names in the *-supply properties. Yes, they 
> > > are a PIA to retrieve compared to a *-names property, but that is the 
> > > nature of this style of binding.
> 
> Its not just PIA, but impossible AFAICT.
> 
> There are two important pieces of information we need for multiple
> regulator support:
> - Which regulator in the consumer node corresponds to which entry in
>   the OPP table. As Mark mentioned earlier, DT should be able to get
>   us this.

This is also possible from C code though. Or is there some case
where it isn't possible if we're sharing the same table with two
devices? I'm lost on when this would ever happen.

It feels like trying to keep the OPP table agnostic of the
consuming device and the device's binding is more trouble than
it's worth. Especially considering we have opp-shared and *-name
now.

> - The order in which the supplies need to be programmed. We have all
>   agreed to do this in code instead of inferring it from DT and this
>   patch series already does that.

Agreed. Encoding a sequence into DT doesn't sound very feasible.
How is this going to be handled though? I don't see any users of
the code we're reviewing here, so it's hard to grasp how things
will work. It would be really useful if we had some user of the
code included in the patch series to get the big picture.

> 
> I want to solve the first problem here and I don't see how it can be
> solved using such entries:
> 
> 	cpus {
> 		cpu@0 {
> 			compatible = "arm,cortex-a7";
> 			...
> 
>                         vcc0-supply = <&cpu_supply0>;
>                         vcc1-supply = <&cpu_supply1>;
>                         vcc2-supply = <&cpu_supply2>;
> 			operating-points-v2 = <&cpu0_opp_table>;
>                 };
>         };
> 
> 	cpu0_opp_table: opp_table0 {
> 		compatible = "operating-points-v2";
> 		opp-shared;
> 
> 		opp@1000000000 {
> 			opp-hz = /bits/ 64 <1000000000>;
> 			opp-microvolt = <970000>, /* Supply 0 */
> 					<960000>, /* Supply 1 */
> 					<960000>; /* Supply 2 */
> 		};
>         };
> 
> The code can't figure out which of vcc0, vcc1, vcc2 is added first in
> the CPU node and so we need to get the order somehow. A separate
> binding as I mentioned earlier is a probably (ugly) solution.
> 
> > I think the problem is that Viresh wants the binding to be "self
> > describing" so that the OPP can be used without a driver knowing
> > that a supply corresponds to a particular column in the voltage
> > table.
> 
> Right, and that's what Mark suggested as well.
> 
> > I don't understand that though. Can't we set the supply
> > names from C code somewhere based on the consumer of the OPPs?
> 
> That's what this patch series is doing right now.
> 
> So, are you saying that the way this patchset does it is fine with you
> ?

That's just to handle the ordering of operations? I need to take
a minute and understand what's changing. You may have spent
plenty of time developing/updating, but I haven't spent near
enough time understanding what's going on in these patches to
give a thorough review.

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

  reply	other threads:[~2016-11-15 18:56 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 [this message]
2016-11-15 22:11                       ` Dave Gerlach
2016-11-16  3:18                         ` Viresh Kumar
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
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=20161115185645.GA25626@codeaurora.org \
    --to=sboyd@codeaurora.org \
    --cc=broonie@kernel.org \
    --cc=d-gerlach@ti.com \
    --cc=devicetree@vger.kernel.org \
    --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=vincent.guittot@linaro.org \
    --cc=viresh.kumar@linaro.org \
    --cc=vireshk@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).