devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Nishanth Menon <nm@ti.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Sudeep KarkadaNagesha <Sudeep.KarkadaNagesha@arm.com>,
	Stephen Warren <swarren@wwwdotorg.org>,
	"cpufreq@vger.kernel.org" <cpufreq@vger.kernel.org>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"rob.herring@calxeda.com" <rob.herring@calxeda.com>,
	Pawel Moll <Pawel.Moll@arm.com>,
	"Rafael J. Wysocki" <rjw@sisk.pl>
Subject: Re: [RFC PATCH 1/2] PM / OPP: add support to specify phandle of another node for OPP
Date: Wed, 31 Jul 2013 11:27:39 -0500	[thread overview]
Message-ID: <51F93AFB.1030104@ti.com> (raw)
In-Reply-To: <20130731161103.GS29859@e106331-lin.cambridge.arm.com>

On 07/31/2013 11:11 AM, Mark Rutland wrote:
> On Wed, Jul 31, 2013 at 04:58:22PM +0100, Nishanth Menon wrote:
>> On 07/31/2013 10:29 AM, Mark Rutland wrote:
>>> On Wed, Jul 31, 2013 at 03:46:34PM +0100, Nishanth Menon wrote:
>>>> On 07/31/2013 06:14 AM, Sudeep KarkadaNagesha wrote:
>>>>> On 30/07/13 21:48, Nishanth Menon wrote:
>>>>>> On 07/30/2013 01:34 PM, Stephen Warren wrote:
>>>>>>> On 07/30/2013 12:00 PM, Sudeep KarkadaNagesha wrote:
>>>>>>>> From: Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>
>>>>>>>>
>>>>>>>> If more than one similar devices share the same OPPs, currently we
>>>>>>>> need to replicate the OPP entries in all the nodes.
>>>>>>>>
>>>>>>>> Few drivers like cpufreq depend on physical cpu0 node to specify the
>>>>>>>> OPPs and only that node is referred irrespective of the logical cpu
>>>>>>>> accessing it. Alternatively to support cpuhotplug path, few drivers
>>>>>>>> parse all the cpu nodes for OPPs. Instead we can specify the phandle
>>>>>>>> of the node with which the current node shares the operating points.
>>>>>>>>
>>>>>>>> This patch adds support to specify the phandle in the operating points
>>>>>>>> of any device node, where the node specified by the phandle holds the
>>>>>>>> actual OPPs.
>>>>>>>
>>>>>>>> diff --git a/Documentation/devicetree/bindings/power/opp.txt b/Documentation/devicetree/bindings/power/opp.txt
>>>>>>>
>>>>>>>> +Optional properties:
>>>>>>>> +- operating-points-phandle: phandle to the device node with which this
>>>>>>>
>>>>>>> That's a funny name. Bikeshedding a bit, how about shared-operating-points?
>>>>>>>
>>>>>>> I haven't thought at all about whether this change conceptually makes sense.
>>>>>>>
>>>>>>
>>>>>> They may not really be shared- we could have phandle list even. one
>>>>>> might have optional OPP sets for a chip family that one may  - I was
>>>>>> about to suggest something similar to pinctrl
>>>>>>
>>>>> I am not sure if I follow you here, if each chip family has its unique
>>>>> set of OPPs, why do we need to represent all of them together ?
>>>>> IIUC you are thinking about having these in include dts file, used by
>>>>> multiple chip/board dts.
>>>>>
>>>>>> operating-points-names = "default", "performance", "cheapboard-config" ;)
>>>>>> operating-points-0 = <&...>
>>>>>> operating-points-1 = <&...>
>>>>>> operating-points-2 = <&...>
>>>>>>
>>>>> This looks more like a PM policy.
>>>>
>>>> Let me try to explain since SoCs such as OMAP/AM family dont make life
>>>> trivial :)..
>>>>
>>>> An legacy example[1][2]
>>>>
>>>> SoC DM explains that the chip is capable of X opps:
>>>> opp1, 2 - for all devices
>>>> opp1,2, 3 - if efuse bit X@y is set
>>>> opp1,2,3,4 - if efuse bit X@y is set AND Board design meets SoC vendors
>>>> requirements (including additional features A, B is enabled).
>>>>
>>>> So, the same chip family has a hardware feature - not just as a pm
>>>> policy of selecting among a set of OPPs which opp to work on, but the
>>>> actual set of OPPs are actually options in themselves that is selected
>>>> based on board's SoC selection.
>>>
>>> This sounds like we're describing a set of features not applicable to
>>> the device, then removing them, rather than only describing those
>>> features applicable to the device. If you have to probe to figure out
>>> which values in the dt are applicable, I'm not sure I see the benefit of
>>> describing said values in dt.
>>
>> Device has *options* of operating points sets it can operate at. It is
>> not like "these are not applicable" for the device.
>
> I don't follow.
>
> In the example above, if efuse bit X@y is not set, opp3 is not
> applicable, but we're describing it in dt. It's not an option for the
> particular device, yet it appears in the device's dt.
This one is easy - opp_enable/disable as discussed in 
http://marc.info/?l=linux-pm&m=137528631125365&w=2 should probably help.
>
> For opp4, it's even worse, as you're suggesting we describe an option
> for the device that requires the driver to use some additional platform
> knowledge to come to the conclusion that it cannot use. That sounds like

Precisely.. it wont have that knowledge and should not need that 
knowledge. See explanation above.

Specific examples: SoC vendors try to squeeze the max out of the chip, 
when voltage values are defined, they need to consider board markets 
that they try to address, pricepoints etc.. too many vectors.. not all 
board manufacturers care to meet SoC vendor requirements as they may not 
care about picking up the full potential of the chip - example - 
usecases on OMAP where ARM is seldom used and max DSP is used (video 
usecases) and others so they use a high performance chip, refuse to 
optimize vdd_mpu rail, dont care too much about higher ARM OPPs. Yeah, I 
could always tell them to hand edit the OPP entries and maintain kernel 
forks, but that is never the right thing to do.


> device knowledge internal to a driver, not how you describe an instance
> of a device to an OS.

OPP has never been a device - it is a performance point at which to 
operate a device. I am not sure if we are discussing about phandle 
definition of OPP is an issue or options of operating-point sets is an 
issue now.

>
> Have I misunderstood something here?

Are you suggesting we have OPP tables per board?

>
>>
>> DT does have to describe the hardware capability - that was it's entire
>> intent. operating points are valid configurations where it can be
>> operated at - and when you have options of configurations you need to
>> choose from based on the board you are using it on, it still retains
>> "hardware behavior" aspect.
>
> The dt should describe the particular board you're running on. As I see
> it what you're suggesting is equivalent to describing some hardware in
> the dt that isn't actually present, then relying on the OS to poke
> around somewhere else, figure out that the hardware isn't present, and
> then forget that the dt described it.
I will buy that eventual dtb should contain some way to choose the OPP 
that the particular board can operate on.

SoC dtsi is what we define, this allows multiple board dts to use them. 
the moment we start defining OPPs per board, all mayhem breaks loose.

SoC dtsi provides options for the SoC to be operated upon, it is like 
saying I have 10 Uarts, but board dts chooses to enable the ones it 
uses. pinctrl we do the same. why cant we do with operating-points as well?



-- 
Regards,
Nishanth Menon

  reply	other threads:[~2013-07-31 16:27 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-30 18:00 [RFC PATCH 0/2] PM / OPP: updates to enable sharing OPPs info Sudeep KarkadaNagesha
2013-07-30 18:00 ` [RFC PATCH 1/2] PM / OPP: add support to specify phandle of another node for OPP Sudeep KarkadaNagesha
2013-07-30 18:34   ` Stephen Warren
2013-07-30 20:48     ` Nishanth Menon
2013-07-30 21:25       ` Stephen Warren
2013-07-31 11:14       ` Sudeep KarkadaNagesha
2013-07-31 14:46         ` Nishanth Menon
2013-07-31 15:28           ` Sudeep KarkadaNagesha
2013-07-31 15:53             ` Nishanth Menon
2013-07-31 16:40               ` Sudeep KarkadaNagesha
2013-07-31 19:13                 ` Nishanth Menon
2013-07-31 19:55                   ` Nishanth Menon
2013-07-31 15:29           ` Mark Rutland
2013-07-31 15:58             ` Nishanth Menon
2013-07-31 16:11               ` Mark Rutland
2013-07-31 16:27                 ` Nishanth Menon [this message]
2013-08-01 13:54                   ` Mark Rutland
2013-08-01 16:25                     ` Nishanth Menon
2013-08-02 13:15                       ` Mark Rutland
2013-08-06 13:45                         ` Nishanth Menon
2013-08-07 16:17                           ` Mark Rutland
2013-08-20 10:00                             ` Sudeep KarkadaNagesha
2013-08-20 14:01                               ` Nishanth Menon
2013-08-20 16:07                                 ` Sudeep KarkadaNagesha
2013-08-21 22:48                               ` Stephen Warren
2013-08-22 11:59                                 ` Mark Rutland
2013-08-22 15:32                                   ` Sudeep KarkadaNagesha
2013-08-22 15:50                                     ` Mark Rutland
2013-08-22 16:28                                       ` Sudeep KarkadaNagesha
2013-08-23 12:26                                         ` Mark Rutland
2013-08-01 16:49                     ` Stephen Warren
2013-08-02 13:43                       ` Sudeep KarkadaNagesha
2013-08-06 13:29                         ` Nishanth Menon
2013-07-31 21:59                 ` Stephen Warren
2013-07-31 21:51           ` Stephen Warren
2013-08-01 12:15             ` Nishanth Menon
2013-08-01 16:46               ` Stephen Warren
2013-07-31 10:46     ` Sudeep KarkadaNagesha
2013-07-30 18:00 ` [RFC PATCH 2/2] PM / OPP: check for existing OPP list when initialising from device tree Sudeep KarkadaNagesha
2013-07-31 16:39   ` Nishanth Menon

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=51F93AFB.1030104@ti.com \
    --to=nm@ti.com \
    --cc=Pawel.Moll@arm.com \
    --cc=Sudeep.KarkadaNagesha@arm.com \
    --cc=cpufreq@vger.kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=rjw@sisk.pl \
    --cc=rob.herring@calxeda.com \
    --cc=swarren@wwwdotorg.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).