Loading drivers/cpufreq/cpufreq.c +0 −9 Original line number Diff line number Diff line Loading @@ -1976,15 +1976,6 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy, pr_debug("target for CPU %u: %u kHz, relation %u, requested %u kHz\n", policy->cpu, target_freq, relation, old_target_freq); /* * This might look like a redundant call as we are checking it again * after finding index. But it is left intentionally for cases where * exactly same freq is called again and so we can save on few function * calls. */ if (target_freq == policy->cur) return 0; /* Save last value to restore later on errors */ policy->restore_freq = policy->cur; Loading drivers/cpufreq/qcom-cpufreq.c +31 −2 Original line number Diff line number Diff line Loading @@ -34,6 +34,8 @@ struct cpufreq_suspend_t { }; static DEFINE_PER_CPU(struct cpufreq_suspend_t, suspend_data); static DEFINE_PER_CPU(int, cached_resolve_idx); static DEFINE_PER_CPU(unsigned int, cached_resolve_freq); static int set_cpu_freq(struct cpufreq_policy *policy, unsigned int new_freq, unsigned int index) Loading Loading @@ -63,12 +65,16 @@ static int msm_cpufreq_target(struct cpufreq_policy *policy, unsigned int target_freq, unsigned int relation) { int ret = -EFAULT; int ret = 0; int index; struct cpufreq_frequency_table *table; int first_cpu = cpumask_first(policy->related_cpus); mutex_lock(&per_cpu(suspend_data, policy->cpu).suspend_mutex); if (target_freq == policy->cur) goto done; if (per_cpu(suspend_data, policy->cpu).device_suspended) { pr_debug("cpufreq: cpu%d scheduling frequency change in suspend\n", policy->cpu); Loading @@ -77,7 +83,11 @@ static int msm_cpufreq_target(struct cpufreq_policy *policy, } table = policy->freq_table; index = cpufreq_frequency_table_target(policy, target_freq, relation); if (per_cpu(cached_resolve_freq, first_cpu) == target_freq) index = per_cpu(cached_resolve_idx, first_cpu); else index = cpufreq_frequency_table_target(policy, target_freq, relation); pr_debug("CPU[%d] target %d relation %d (%d-%d) selected %d\n", policy->cpu, target_freq, relation, Loading @@ -90,6 +100,23 @@ static int msm_cpufreq_target(struct cpufreq_policy *policy, return ret; } static unsigned int msm_cpufreq_resolve_freq(struct cpufreq_policy *policy, unsigned int target_freq) { int index; int first_cpu = cpumask_first(policy->related_cpus); unsigned int freq; index = cpufreq_frequency_table_target(policy, target_freq, CPUFREQ_RELATION_L); freq = policy->freq_table[index].frequency; per_cpu(cached_resolve_idx, first_cpu) = index; per_cpu(cached_resolve_freq, first_cpu) = freq; return freq; } static int msm_cpufreq_verify(struct cpufreq_policy *policy) { cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, Loading Loading @@ -275,6 +302,7 @@ static struct cpufreq_driver msm_cpufreq_driver = { .init = msm_cpufreq_init, .verify = msm_cpufreq_verify, .target = msm_cpufreq_target, .resolve_freq = msm_cpufreq_resolve_freq, .get = msm_cpufreq_get_freq, .name = "msm", .attr = msm_freq_attr, Loading Loading @@ -441,6 +469,7 @@ static int __init msm_cpufreq_register(void) for_each_possible_cpu(cpu) { mutex_init(&(per_cpu(suspend_data, cpu).suspend_mutex)); per_cpu(suspend_data, cpu).device_suspended = 0; per_cpu(cached_resolve_freq, cpu) = UINT_MAX; } rc = platform_driver_register(&msm_cpufreq_plat_driver); Loading Loading
drivers/cpufreq/cpufreq.c +0 −9 Original line number Diff line number Diff line Loading @@ -1976,15 +1976,6 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy, pr_debug("target for CPU %u: %u kHz, relation %u, requested %u kHz\n", policy->cpu, target_freq, relation, old_target_freq); /* * This might look like a redundant call as we are checking it again * after finding index. But it is left intentionally for cases where * exactly same freq is called again and so we can save on few function * calls. */ if (target_freq == policy->cur) return 0; /* Save last value to restore later on errors */ policy->restore_freq = policy->cur; Loading
drivers/cpufreq/qcom-cpufreq.c +31 −2 Original line number Diff line number Diff line Loading @@ -34,6 +34,8 @@ struct cpufreq_suspend_t { }; static DEFINE_PER_CPU(struct cpufreq_suspend_t, suspend_data); static DEFINE_PER_CPU(int, cached_resolve_idx); static DEFINE_PER_CPU(unsigned int, cached_resolve_freq); static int set_cpu_freq(struct cpufreq_policy *policy, unsigned int new_freq, unsigned int index) Loading Loading @@ -63,12 +65,16 @@ static int msm_cpufreq_target(struct cpufreq_policy *policy, unsigned int target_freq, unsigned int relation) { int ret = -EFAULT; int ret = 0; int index; struct cpufreq_frequency_table *table; int first_cpu = cpumask_first(policy->related_cpus); mutex_lock(&per_cpu(suspend_data, policy->cpu).suspend_mutex); if (target_freq == policy->cur) goto done; if (per_cpu(suspend_data, policy->cpu).device_suspended) { pr_debug("cpufreq: cpu%d scheduling frequency change in suspend\n", policy->cpu); Loading @@ -77,7 +83,11 @@ static int msm_cpufreq_target(struct cpufreq_policy *policy, } table = policy->freq_table; index = cpufreq_frequency_table_target(policy, target_freq, relation); if (per_cpu(cached_resolve_freq, first_cpu) == target_freq) index = per_cpu(cached_resolve_idx, first_cpu); else index = cpufreq_frequency_table_target(policy, target_freq, relation); pr_debug("CPU[%d] target %d relation %d (%d-%d) selected %d\n", policy->cpu, target_freq, relation, Loading @@ -90,6 +100,23 @@ static int msm_cpufreq_target(struct cpufreq_policy *policy, return ret; } static unsigned int msm_cpufreq_resolve_freq(struct cpufreq_policy *policy, unsigned int target_freq) { int index; int first_cpu = cpumask_first(policy->related_cpus); unsigned int freq; index = cpufreq_frequency_table_target(policy, target_freq, CPUFREQ_RELATION_L); freq = policy->freq_table[index].frequency; per_cpu(cached_resolve_idx, first_cpu) = index; per_cpu(cached_resolve_freq, first_cpu) = freq; return freq; } static int msm_cpufreq_verify(struct cpufreq_policy *policy) { cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, Loading Loading @@ -275,6 +302,7 @@ static struct cpufreq_driver msm_cpufreq_driver = { .init = msm_cpufreq_init, .verify = msm_cpufreq_verify, .target = msm_cpufreq_target, .resolve_freq = msm_cpufreq_resolve_freq, .get = msm_cpufreq_get_freq, .name = "msm", .attr = msm_freq_attr, Loading Loading @@ -441,6 +469,7 @@ static int __init msm_cpufreq_register(void) for_each_possible_cpu(cpu) { mutex_init(&(per_cpu(suspend_data, cpu).suspend_mutex)); per_cpu(suspend_data, cpu).device_suspended = 0; per_cpu(cached_resolve_freq, cpu) = UINT_MAX; } rc = platform_driver_register(&msm_cpufreq_plat_driver); Loading