From: Mike Turquette <mturquette@ti.com>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: Device tree binding for DVFS table
Date: Fri, 13 Jul 2012 17:25:32 +0000 [thread overview]
Message-ID: <20120713172532.GN2772@gmail.com> (raw)
In-Reply-To: <20120713103408.GF9437@tbergstrom-lnx.Nvidia.com>
On 20120713-13:34, Peter De Schrijver wrote:
> Hi Mike,
>
> >
> > Peter,
> >
> > I agree with your observations in general, but I think some specificity
> > is needed:
> >
> > > + frequency/voltage relationships
> >
> > We should be clear that the voltage does NOT belong to the clock, but to
> > the device/module/IP block that consumes that clock. This is an
> > important detail since it means that a clock does not have a
> > corresponding table of voltages (e.g. one table per clock), but instead
> > a device has a table of voltages corresponding to each clock.
> >
>
> Or the other way around, a table of clock frequencies, 1 for each voltage.
>
ACK
You said what I meant to say. Some previous iterations of an
omap-specific dvfs api tried to use voltage as the unique key for
accessing frequency/voltage tables, and that can get really ugly for a
variety of reasons. Plus device drivers typically request performance
in Hertz (e.g. clk_set_rate), so exposing a voltage-centric interface to
them is generally useless.
The OPP library does some of this right (drivers/base/power/opp.c). It
keeps a list of tables on a per-device bases, which is a big step in the
right direction. Unfortunately it is lacking in other areas, such as
not specifying which clock corresponds to the to table. Thus a device
can only have one table and that table does not encode any information
about which clock to use (which is important for devices that use a mux
to change rate). The dvfs DT bindings should not repeat those mistakes.
> > This is very necessary when a single clock drives multiple devices which
> > are driven by separate voltage rails.
> >
>
> Ah ok. How does this work in practice? A device can only run at a given clock
> rate if all the rails are at a certain voltage?
>
More like an adjustable rate clock higher up the tree affects the rate
of multiple devices downstream, and those devices happen to be on
separate rails. Either way I think that the design should account for
this possibility.
Regards,
Mike
> > > + power rail constraints (eg voltage difference limit between 2 rails)
> >
> > This should come from regulator DT data and not anything DVFS-specific,
> > correct?
> >
>
> That's true. I think it can even be open-coded as this is a SoC internal
> thing. All boards using this SoC will have the same limits, so I see little
> reason to move this info to DT.
>
> > > + clock constraints (eg. clock x frequency must be a fixed ratio of clock y
> > > frequency)
> >
> > Yeah, after sending my email above yesterday I instantly regretted it.
> > It is true that *functional* clock dependencies are really the purview
> > of the device driver. E.g. for Device X to operate at FAST_SPEED, scale
> > functional_clk up to 200MHz and l3_ddr_clk up to 100MHz. On OMAP our
> > display subsystem block also has clock ratio rules that must be honored,
> > but it just open-coded.
> >
> > It is possible to model those in DT if we really want, but shouldn't be
> > a priority for these dvfs-specific bindings.
> >
>
> Agreed.
>
> Cheers,
>
> Peter.
next prev parent reply other threads:[~2012-07-13 17:25 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-11 13:08 Device tree binding for DVFS table 함명주
2012-07-11 13:08 ` Prashant Gaikwad
2012-07-11 14:03 ` Rob Herring
2012-07-11 14:44 ` Mark Brown
2012-07-11 20:04 ` Mike Turquette
2012-07-12 4:26 ` Prashant Gaikwad
2012-07-12 14:10 ` Peter De Schrijver
2012-07-12 17:10 ` Mike Turquette
2012-07-12 17:15 ` Mark Brown
2012-07-13 10:34 ` Peter De Schrijver
2012-07-13 17:25 ` Mike Turquette [this message]
2012-07-12 4:29 ` Prashant Gaikwad
2012-07-12 15:23 ` Mark Brown
2012-07-12 17:01 ` Mike Turquette
2012-07-12 8:19 ` Peter De Schrijver
2012-07-12 4:20 ` Prashant Gaikwad
2012-07-13 18:42 ` Prashant Gaikwad
2012-07-15 21:40 ` Mark Brown
2012-07-15 23:42 ` Rob Herring
2012-07-16 18:36 ` Turquette, Mike
2012-07-17 12:49 ` Prashant Gaikwad
2012-07-17 13:20 ` Mark Brown
2012-07-17 14:34 ` Prashant Gaikwad
2012-07-17 14:37 ` Mark Brown
2012-07-18 12:58 ` Prashant Gaikwad
2012-07-18 21:19 ` Mark Brown
2012-07-18 17:08 ` Shawn Guo
2012-07-11 13:49 ` Peter De Schrijver
2012-07-11 13:49 ` Peter De Schrijver
2012-07-12 4:34 ` Prashant Gaikwad
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=20120713172532.GN2772@gmail.com \
--to=mturquette@ti.com \
--cc=linux-arm-kernel@lists.infradead.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).