cpufreq: sparc: call cpufreq_frequency_table_get_attr()
[firefly-linux-kernel-4.4.55.git] / drivers / cpufreq / sparc-us3-cpufreq.c
index ac76b489979d48cac1278525ab861f46b69f8c86..985bc56b0068896d64be1b1fdd3cf0dc4a76c140 100644 (file)
@@ -168,6 +168,7 @@ static int __init us3_freq_cpu_init(struct cpufreq_policy *policy)
        unsigned long clock_tick = sparc64_get_clock_tick(cpu) / 1000;
        struct cpufreq_frequency_table *table =
                &us3_freq_table[cpu].table[0];
+       int ret;
 
        table[0].driver_data = 0;
        table[0].frequency = clock_tick / 1;
@@ -181,13 +182,19 @@ static int __init us3_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 us3_freq_cpu_exit(struct cpufreq_policy *policy)
 {
-       if (cpufreq_us3_driver)
+       if (cpufreq_us3_driver) {
+               cpufreq_frequency_table_put_attr(policy->cpu);
                us3_set_cpu_divider_index(policy, 0);
+       }
 
        return 0;
 }