Re: [RFC PATCH] PM: Introduce generic DVFS framework with device-specific OPPs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 27, 2011 at 11:48 AM, Menon, Nishanth <nm@xxxxxx> wrote:
> On Wed, Apr 27, 2011 at 13:29, Colin Cross <ccross@xxxxxxxxxx> wrote:
>> On Wed, Apr 27, 2011 at 11:07 AM, Menon, Nishanth <nm@xxxxxx> wrote:
>>> On Wed, Apr 27, 2011 at 12:49, Colin Cross <ccross@xxxxxxxxxx> wrote:
>>> +l-o
>>>
>>>> I'm a little confused about the design for this, and OPP as well.  OPP
>>>> matches a struct device * and a frequency to a voltage, which is not a
>>>> generically useful pairing, as far as I can tell.  On Tegra, it is
>>>> quite possible for a single device to have multiple clocks that each
>>>> have different voltage requirements, for example the display block can
>>>> have an interface clock as well as a pixel clock.  Simplifying this to
>>>> dev + freq = voltage seems very OMAP specific, and will be difficult
>>>> or impossible to adapt to Tegra.
>>> We have the same requirements as well(iclk,fclk,pixclk etc..)! We
>>> group them under voltage domains in OMAP ;). if your issue was a
>>> ability to have a single freq to a OPP, it is upto SoC to do the
>>> proper mapping. Concept of an OPP still remains consistent - which is
>>> for a voltage, there is only so much freq you can drive that specific
>>> module to.
>> No, that is still wrong.  You don't drive a module at a frequency, you
>> drive a clock.  You can't map struct device * 1-1 to a clock.  Look at
> Agreed, module runs on clocks - Lets say n clocks provide a module
> it's functionality.
>
>> omap2_set_init_voltage:
>> static int __init omap2_set_init_voltage(char *vdd_name, char *clk_name,
>>                                                struct device *dev) {
>>
>>        clk =  clk_get(NULL, clk_name);
>>        freq = clk->rate;
>>        opp = opp_find_freq_ceil(dev, &freq);
>>        ...
>> }
>>
>> Now what happens if I have a dev with two frequencies,
> we do have it - it depends on what the OPP table represents. we do
> have modules which have both interface and functional clocks on OMAP
> as well. for a module(represented by struct device *) which has n
> clocks, choose the scheme of representation of clock that depends on
> voltage for the module.
> in the example you provided "the display block can have an interface
> clock as well as a pixel clock" - I suppose you mean:
> {.pclk = x, .iclk = y, .v = z}
> The question I'd ask is this : for a voltage z, is the dependency on
> pclk or iclk? I can expect a dependency of pclk to iclk requirement
> (considering pixel clock drives an external display for example). the
> table reduces to just
> {.iclk = y, .v = z} and a different table that has divisor for .iclk
> to pclk which is SoC based.

No, there can be voltage requirements on both, and the higher voltage
requirement of the two must be used.

> OPP table is just a storage and retrieval mechanism, it is upto SoC
> frameworks to choose the most adequate of solutions - e.g. OMAP has
> omap_device, hwmod and a clock framework for more intricate control to
> work in conjunction with cpuidle frameworks as well.
>
> There is cross domain dependency which OMAP (yet to be pushed to
> mainline) has - example: when OMAP4's MPUs are at a certain OPP, L3
> (OMAP's SoC bus) needs to be at least a certain OPP - these are
> framework which may be very custom to OMAP itself.
>
> ---
> Regards,
> Nishanth Menon
>
_______________________________________________
linux-pm mailing list
linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linux-foundation.org/mailman/listinfo/linux-pm



[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux