|
@@ -71,15 +71,15 @@ static unsigned int dbx500_cpufreq_getspeed(unsigned int cpu)
|
|
|
int i = 0;
|
|
|
unsigned long freq = clk_get_rate(armss_clk) / 1000;
|
|
|
|
|
|
- while (freq_table[i].frequency != CPUFREQ_TABLE_END) {
|
|
|
- if (freq <= freq_table[i].frequency)
|
|
|
+ /* The value is rounded to closest frequency in the defined table. */
|
|
|
+ while (freq_table[i + 1].frequency != CPUFREQ_TABLE_END) {
|
|
|
+ if (freq < freq_table[i].frequency +
|
|
|
+ (freq_table[i + 1].frequency - freq_table[i].frequency) / 2)
|
|
|
return freq_table[i].frequency;
|
|
|
i++;
|
|
|
}
|
|
|
|
|
|
- /* We could not find a corresponding frequency. */
|
|
|
- pr_err("dbx500-cpufreq: Failed to find cpufreq speed\n");
|
|
|
- return 0;
|
|
|
+ return freq_table[i].frequency;
|
|
|
}
|
|
|
|
|
|
static int __cpuinit dbx500_cpufreq_init(struct cpufreq_policy *policy)
|