]> asedeno.scripts.mit.edu Git - linux.git/commit
clk: mvebu: extend clk-cpu for dynamic frequency scaling
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Wed, 9 Jul 2014 15:45:11 +0000 (17:45 +0200)
committerJason Cooper <jason@lakedaemon.net>
Wed, 16 Jul 2014 12:58:38 +0000 (12:58 +0000)
commitee2d8ea1e9bb27989f4f157520500dd6c4d45347
tree2291ed9c826c72840424d0707b813974bf0cfbd8
parenta509ea840b8e29e512764803e30b805c7ea89038
clk: mvebu: extend clk-cpu for dynamic frequency scaling

This commit extends the existing clk-cpu driver used on Marvell Armada
XP platforms to support the dynamic frequency scaling of the CPU
clock. Non-dynamic frequency change was already supported (and used
before secondary CPUs are started), but the dynamic frequency change
requires a completely different procedure.

In order to achieve this, the clk_cpu_set_rate() function is reworked
to handle two separate cases:

 - The case where the clock is enabled, which is the new dynamic
   frequency change code, implemented in clk_cpu_on_set_rate(). This
   part will be used for cpufreq activities.

 - The case where the clock is disabled, which is the existing
   frequency change code, moved in clk_cpu_off_set_rate(). This part
   is already used to set the clock frequency of the secondary CPUs
   before starting them.

In order to implement the dynamic frequency change function, we need
to access the PMU DFS registers, which are outside the currently
mapped "Clock Complex" registers, so a new area of registers is now
mapped. This affects the Device Tree binding, but we are careful to do
it in a backward-compatible way (by allowing the second pair of
registers to be non-existent, and in this case, ensuring
clk_cpu_on_set_rate() returns an error).

Note that technically speaking, the clk_cpu_on_set_rate() does not do
the entire procedure needed to change the frequency dynamically, as it
involves touching a number of PMSU registers. This is done through a
clock notifier registered by the PMSU driver in followup commits.

Cc: <devicetree@vger.kernel.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Link: https://lkml.kernel.org/r/1404920715-19834-4-git-send-email-thomas.petazzoni@free-electrons.com
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
Documentation/devicetree/bindings/clock/mvebu-cpu-clock.txt
drivers/clk/mvebu/clk-cpu.c