diff options
Diffstat (limited to 'drivers/cpufreq/scpi-cpufreq.c')
-rw-r--r-- | drivers/cpufreq/scpi-cpufreq.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/cpufreq/scpi-cpufreq.c b/drivers/cpufreq/scpi-cpufreq.c index c32a833e1b00..d300a163945f 100644 --- a/drivers/cpufreq/scpi-cpufreq.c +++ b/drivers/cpufreq/scpi-cpufreq.c | |||
@@ -51,15 +51,23 @@ static unsigned int scpi_cpufreq_get_rate(unsigned int cpu) | |||
51 | static int | 51 | static int |
52 | scpi_cpufreq_set_target(struct cpufreq_policy *policy, unsigned int index) | 52 | scpi_cpufreq_set_target(struct cpufreq_policy *policy, unsigned int index) |
53 | { | 53 | { |
54 | unsigned long freq = policy->freq_table[index].frequency; | ||
54 | struct scpi_data *priv = policy->driver_data; | 55 | struct scpi_data *priv = policy->driver_data; |
55 | u64 rate = policy->freq_table[index].frequency * 1000; | 56 | u64 rate = freq * 1000; |
56 | int ret; | 57 | int ret; |
57 | 58 | ||
58 | ret = clk_set_rate(priv->clk, rate); | 59 | ret = clk_set_rate(priv->clk, rate); |
59 | if (!ret && (clk_get_rate(priv->clk) != rate)) | ||
60 | ret = -EIO; | ||
61 | 60 | ||
62 | return ret; | 61 | if (ret) |
62 | return ret; | ||
63 | |||
64 | if (clk_get_rate(priv->clk) != rate) | ||
65 | return -EIO; | ||
66 | |||
67 | arch_set_freq_scale(policy->related_cpus, freq, | ||
68 | policy->cpuinfo.max_freq); | ||
69 | |||
70 | return 0; | ||
63 | } | 71 | } |
64 | 72 | ||
65 | static int | 73 | static int |