|
@@ -307,6 +307,7 @@ static int __init us2e_freq_cpu_init(struct cpufreq_policy *policy)
|
|
|
unsigned long clock_tick = sparc64_get_clock_tick(cpu) / 1000;
|
|
|
struct cpufreq_frequency_table *table =
|
|
|
&us2e_freq_table[cpu].table[0];
|
|
|
+ int ret;
|
|
|
|
|
|
table[0].driver_data = 0;
|
|
|
table[0].frequency = clock_tick / 1;
|
|
@@ -324,13 +325,18 @@ static int __init us2e_freq_cpu_init(struct cpufreq_policy *policy)
|
|
|
policy->cpuinfo.transition_latency = 0;
|
|
|
policy->cur = clock_tick;
|
|
|
|
|
|
- return cpufreq_frequency_table_cpuinfo(policy, table);
|
|
|
+ ret = cpufreq_frequency_table_cpuinfo(policy, table);
|
|
|
+ if (!ret)
|
|
|
+ cpufreq_frequency_table_get_attr(table, policy->cpu);
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static int us2e_freq_cpu_exit(struct cpufreq_policy *policy)
|
|
|
{
|
|
|
- if (cpufreq_us2e_driver)
|
|
|
+ if (cpufreq_us2e_driver) {
|
|
|
+ cpufreq_frequency_table_put_attr(policy->cpu);
|
|
|
us2e_set_cpu_divider_index(policy, 0);
|
|
|
+ }
|
|
|
|
|
|
return 0;
|
|
|
}
|