diff options
Diffstat (limited to 'drivers/cpufreq')
-rw-r--r-- | drivers/cpufreq/kirkwood-cpufreq.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/drivers/cpufreq/kirkwood-cpufreq.c b/drivers/cpufreq/kirkwood-cpufreq.c index 37a480680cd0..7906d4acfe40 100644 --- a/drivers/cpufreq/kirkwood-cpufreq.c +++ b/drivers/cpufreq/kirkwood-cpufreq.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/module.h> | 13 | #include <linux/module.h> |
14 | #include <linux/clk.h> | 14 | #include <linux/clk.h> |
15 | #include <linux/clk-provider.h> | ||
16 | #include <linux/cpufreq.h> | 15 | #include <linux/cpufreq.h> |
17 | #include <linux/of_device.h> | 16 | #include <linux/of_device.h> |
18 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
@@ -39,8 +38,7 @@ static struct priv | |||
39 | * - cpu clk | 38 | * - cpu clk |
40 | * - ddr clk | 39 | * - ddr clk |
41 | * | 40 | * |
42 | * The frequencies are set at runtime before registering this * | 41 | * The frequencies are set at runtime before registering this table. |
43 | * table. | ||
44 | */ | 42 | */ |
45 | static struct cpufreq_frequency_table kirkwood_freq_table[] = { | 43 | static struct cpufreq_frequency_table kirkwood_freq_table[] = { |
46 | {0, STATE_CPU_FREQ, 0}, /* CPU uses cpuclk */ | 44 | {0, STATE_CPU_FREQ, 0}, /* CPU uses cpuclk */ |
@@ -50,9 +48,7 @@ static struct cpufreq_frequency_table kirkwood_freq_table[] = { | |||
50 | 48 | ||
51 | static unsigned int kirkwood_cpufreq_get_cpu_frequency(unsigned int cpu) | 49 | static unsigned int kirkwood_cpufreq_get_cpu_frequency(unsigned int cpu) |
52 | { | 50 | { |
53 | if (__clk_is_enabled(priv.powersave_clk)) | 51 | return clk_get_rate(priv.powersave_clk) / 1000; |
54 | return kirkwood_freq_table[1].frequency; | ||
55 | return kirkwood_freq_table[0].frequency; | ||
56 | } | 52 | } |
57 | 53 | ||
58 | static int kirkwood_cpufreq_target(struct cpufreq_policy *policy, | 54 | static int kirkwood_cpufreq_target(struct cpufreq_policy *policy, |
@@ -70,10 +66,10 @@ static int kirkwood_cpufreq_target(struct cpufreq_policy *policy, | |||
70 | 66 | ||
71 | switch (state) { | 67 | switch (state) { |
72 | case STATE_CPU_FREQ: | 68 | case STATE_CPU_FREQ: |
73 | clk_disable(priv.powersave_clk); | 69 | clk_set_parent(priv.powersave_clk, priv.cpu_clk); |
74 | break; | 70 | break; |
75 | case STATE_DDR_FREQ: | 71 | case STATE_DDR_FREQ: |
76 | clk_enable(priv.powersave_clk); | 72 | clk_set_parent(priv.powersave_clk, priv.ddr_clk); |
77 | break; | 73 | break; |
78 | } | 74 | } |
79 | 75 | ||
@@ -150,7 +146,7 @@ static int kirkwood_cpufreq_probe(struct platform_device *pdev) | |||
150 | err = PTR_ERR(priv.powersave_clk); | 146 | err = PTR_ERR(priv.powersave_clk); |
151 | goto out_ddr; | 147 | goto out_ddr; |
152 | } | 148 | } |
153 | clk_prepare(priv.powersave_clk); | 149 | clk_prepare_enable(priv.powersave_clk); |
154 | 150 | ||
155 | of_node_put(np); | 151 | of_node_put(np); |
156 | np = NULL; | 152 | np = NULL; |