diff options
Diffstat (limited to 'drivers/cpufreq/exynos-cpufreq.c')
-rw-r--r-- | drivers/cpufreq/exynos-cpufreq.c | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/drivers/cpufreq/exynos-cpufreq.c b/drivers/cpufreq/exynos-cpufreq.c index 348c8bafe436..1e0ec57bf6e3 100644 --- a/drivers/cpufreq/exynos-cpufreq.c +++ b/drivers/cpufreq/exynos-cpufreq.c | |||
@@ -28,17 +28,16 @@ static unsigned int locking_frequency; | |||
28 | static int exynos_cpufreq_get_index(unsigned int freq) | 28 | static int exynos_cpufreq_get_index(unsigned int freq) |
29 | { | 29 | { |
30 | struct cpufreq_frequency_table *freq_table = exynos_info->freq_table; | 30 | struct cpufreq_frequency_table *freq_table = exynos_info->freq_table; |
31 | int index; | 31 | struct cpufreq_frequency_table *pos; |
32 | 32 | ||
33 | for (index = 0; | 33 | cpufreq_for_each_entry(pos, freq_table) |
34 | freq_table[index].frequency != CPUFREQ_TABLE_END; index++) | 34 | if (pos->frequency == freq) |
35 | if (freq_table[index].frequency == freq) | ||
36 | break; | 35 | break; |
37 | 36 | ||
38 | if (freq_table[index].frequency == CPUFREQ_TABLE_END) | 37 | if (pos->frequency == CPUFREQ_TABLE_END) |
39 | return -EINVAL; | 38 | return -EINVAL; |
40 | 39 | ||
41 | return index; | 40 | return pos - freq_table; |
42 | } | 41 | } |
43 | 42 | ||
44 | static int exynos_cpufreq_scale(unsigned int target_freq) | 43 | static int exynos_cpufreq_scale(unsigned int target_freq) |
@@ -48,6 +47,7 @@ static int exynos_cpufreq_scale(unsigned int target_freq) | |||
48 | struct cpufreq_policy *policy = cpufreq_cpu_get(0); | 47 | struct cpufreq_policy *policy = cpufreq_cpu_get(0); |
49 | unsigned int arm_volt, safe_arm_volt = 0; | 48 | unsigned int arm_volt, safe_arm_volt = 0; |
50 | unsigned int mpll_freq_khz = exynos_info->mpll_freq_khz; | 49 | unsigned int mpll_freq_khz = exynos_info->mpll_freq_khz; |
50 | struct device *dev = exynos_info->dev; | ||
51 | unsigned int old_freq; | 51 | unsigned int old_freq; |
52 | int index, old_index; | 52 | int index, old_index; |
53 | int ret = 0; | 53 | int ret = 0; |
@@ -89,8 +89,8 @@ static int exynos_cpufreq_scale(unsigned int target_freq) | |||
89 | /* Firstly, voltage up to increase frequency */ | 89 | /* Firstly, voltage up to increase frequency */ |
90 | ret = regulator_set_voltage(arm_regulator, arm_volt, arm_volt); | 90 | ret = regulator_set_voltage(arm_regulator, arm_volt, arm_volt); |
91 | if (ret) { | 91 | if (ret) { |
92 | pr_err("%s: failed to set cpu voltage to %d\n", | 92 | dev_err(dev, "failed to set cpu voltage to %d\n", |
93 | __func__, arm_volt); | 93 | arm_volt); |
94 | return ret; | 94 | return ret; |
95 | } | 95 | } |
96 | } | 96 | } |
@@ -99,8 +99,8 @@ static int exynos_cpufreq_scale(unsigned int target_freq) | |||
99 | ret = regulator_set_voltage(arm_regulator, safe_arm_volt, | 99 | ret = regulator_set_voltage(arm_regulator, safe_arm_volt, |
100 | safe_arm_volt); | 100 | safe_arm_volt); |
101 | if (ret) { | 101 | if (ret) { |
102 | pr_err("%s: failed to set cpu voltage to %d\n", | 102 | dev_err(dev, "failed to set cpu voltage to %d\n", |
103 | __func__, safe_arm_volt); | 103 | safe_arm_volt); |
104 | return ret; | 104 | return ret; |
105 | } | 105 | } |
106 | } | 106 | } |
@@ -114,8 +114,8 @@ static int exynos_cpufreq_scale(unsigned int target_freq) | |||
114 | ret = regulator_set_voltage(arm_regulator, arm_volt, | 114 | ret = regulator_set_voltage(arm_regulator, arm_volt, |
115 | arm_volt); | 115 | arm_volt); |
116 | if (ret) { | 116 | if (ret) { |
117 | pr_err("%s: failed to set cpu voltage to %d\n", | 117 | dev_err(dev, "failed to set cpu voltage to %d\n", |
118 | __func__, arm_volt); | 118 | arm_volt); |
119 | goto out; | 119 | goto out; |
120 | } | 120 | } |
121 | } | 121 | } |
@@ -162,6 +162,8 @@ static int exynos_cpufreq_probe(struct platform_device *pdev) | |||
162 | if (!exynos_info) | 162 | if (!exynos_info) |
163 | return -ENOMEM; | 163 | return -ENOMEM; |
164 | 164 | ||
165 | exynos_info->dev = &pdev->dev; | ||
166 | |||
165 | if (of_machine_is_compatible("samsung,exynos4210")) { | 167 | if (of_machine_is_compatible("samsung,exynos4210")) { |
166 | exynos_info->type = EXYNOS_SOC_4210; | 168 | exynos_info->type = EXYNOS_SOC_4210; |
167 | ret = exynos4210_cpufreq_init(exynos_info); | 169 | ret = exynos4210_cpufreq_init(exynos_info); |
@@ -183,13 +185,13 @@ static int exynos_cpufreq_probe(struct platform_device *pdev) | |||
183 | goto err_vdd_arm; | 185 | goto err_vdd_arm; |
184 | 186 | ||
185 | if (exynos_info->set_freq == NULL) { | 187 | if (exynos_info->set_freq == NULL) { |
186 | pr_err("%s: No set_freq function (ERR)\n", __func__); | 188 | dev_err(&pdev->dev, "No set_freq function (ERR)\n"); |
187 | goto err_vdd_arm; | 189 | goto err_vdd_arm; |
188 | } | 190 | } |
189 | 191 | ||
190 | arm_regulator = regulator_get(NULL, "vdd_arm"); | 192 | arm_regulator = regulator_get(NULL, "vdd_arm"); |
191 | if (IS_ERR(arm_regulator)) { | 193 | if (IS_ERR(arm_regulator)) { |
192 | pr_err("%s: failed to get resource vdd_arm\n", __func__); | 194 | dev_err(&pdev->dev, "failed to get resource vdd_arm\n"); |
193 | goto err_vdd_arm; | 195 | goto err_vdd_arm; |
194 | } | 196 | } |
195 | 197 | ||
@@ -199,7 +201,7 @@ static int exynos_cpufreq_probe(struct platform_device *pdev) | |||
199 | if (!cpufreq_register_driver(&exynos_driver)) | 201 | if (!cpufreq_register_driver(&exynos_driver)) |
200 | return 0; | 202 | return 0; |
201 | 203 | ||
202 | pr_err("%s: failed to register cpufreq driver\n", __func__); | 204 | dev_err(&pdev->dev, "failed to register cpufreq driver\n"); |
203 | regulator_put(arm_regulator); | 205 | regulator_put(arm_regulator); |
204 | err_vdd_arm: | 206 | err_vdd_arm: |
205 | kfree(exynos_info); | 207 | kfree(exynos_info); |