Common clock and dvfs

Colin Cross ccross at
Fri Apr 22 15:48:37 EDT 2011

On Fri, Apr 22, 2011 at 12:40 PM, Mark Brown
<broonie at> wrote:
> On Fri, Apr 22, 2011 at 11:15:34AM -0700, Colin Cross wrote:
>> Now that we are approaching a common clock management implementation,
>> I was thinking it might be the right place to put a common dvfs
>> implementation as well.
> I looked at this a bit when doing the S3C64xx stuff.
>> frequency changes the clock first, and then calls dvfs_set_rate.  For
>> a generic implementation, an SoC would provide the clock/dvfs
>> framework with a list of clocks, the voltages required for each
>> frequency step on the clock, and the regulator name to change.  The
>> frequency/voltage tables are similar to OPP, except that OPP gets
>> voltages for a device instead of a clock.  In a few odd cases (Tegra
> This sounds like it assumes a 1:1 mapping between clocks and supplies
> which is going to break at some point.  It should be handlable but will
> add complexity.

Almost every platform requires a many-to-one mapping between clocks
and supplies (many clocks fed off one supply), and I bet at least one
platform has one clock that requires changing two supplies, so a
many-to-many mapping is probably required.  It's not hard, I
implemented it for Tegra before moving to a many-to-one - each
relationship between a clock and a supply can be treated
independently, so the pointers in the clock and dvfs structs can just
be converted to lists of an intermediate struct.

More information about the linux-arm-kernel mailing list