cpufreq: governor: Implement per policy instances of governors
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / cpufreq / cpufreq.c
index 08df7a196116805df622b2d4938077fa2848f155..85963fc48a5f696b6c1246eb2d9600a1329632d5 100644 (file)
@@ -128,6 +128,11 @@ void disable_cpufreq(void)
 static LIST_HEAD(cpufreq_governor_list);
 static DEFINE_MUTEX(cpufreq_governor_mutex);
 
+bool have_governor_per_policy(void)
+{
+       return cpufreq_driver->have_governor_per_policy;
+}
+
 static struct cpufreq_policy *__cpufreq_cpu_get(unsigned int cpu, bool sysfs)
 {
        struct cpufreq_policy *data;
@@ -1546,10 +1551,12 @@ static int __cpufreq_governor(struct cpufreq_policy *policy,
                                                policy->cpu, event);
        ret = policy->governor->governor(policy, event);
 
-       if (event == CPUFREQ_GOV_START)
-               policy->governor->initialized++;
-       else if (event == CPUFREQ_GOV_STOP)
-               policy->governor->initialized--;
+       if (!ret) {
+               if (event == CPUFREQ_GOV_POLICY_INIT)
+                       policy->governor->initialized++;
+               else if (event == CPUFREQ_GOV_POLICY_EXIT)
+                       policy->governor->initialized--;
+       }
 
        /* we keep one module reference alive for
                        each CPU governed by this CPU */