Commit 8fec051e authored by Viresh Kumar's avatar Viresh Kumar Committed by Rafael J. Wysocki

cpufreq: Convert existing drivers to use cpufreq_freq_transition_{begin|end}

CPUFreq core has new infrastructure that would guarantee serialized calls to
target() or target_index() callbacks. These are called
cpufreq_freq_transition_begin() and cpufreq_freq_transition_end().

This patch converts existing drivers to use these new set of routines.
Reviewed-by: default avatarSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 12478cf0
...@@ -270,7 +270,7 @@ static int nforce2_target(struct cpufreq_policy *policy, ...@@ -270,7 +270,7 @@ static int nforce2_target(struct cpufreq_policy *policy,
pr_debug("Old CPU frequency %d kHz, new %d kHz\n", pr_debug("Old CPU frequency %d kHz, new %d kHz\n",
freqs.old, freqs.new); freqs.old, freqs.new);
cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE); cpufreq_freq_transition_begin(policy, &freqs);
/* Disable IRQs */ /* Disable IRQs */
/* local_irq_save(flags); */ /* local_irq_save(flags); */
...@@ -285,7 +285,7 @@ static int nforce2_target(struct cpufreq_policy *policy, ...@@ -285,7 +285,7 @@ static int nforce2_target(struct cpufreq_policy *policy,
/* Enable IRQs */ /* Enable IRQs */
/* local_irq_restore(flags); */ /* local_irq_restore(flags); */
cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE); cpufreq_freq_transition_end(policy, &freqs, 0);
return 0; return 0;
} }
......
...@@ -1507,8 +1507,8 @@ static void cpufreq_out_of_sync(unsigned int cpu, unsigned int old_freq, ...@@ -1507,8 +1507,8 @@ static void cpufreq_out_of_sync(unsigned int cpu, unsigned int old_freq,
policy = per_cpu(cpufreq_cpu_data, cpu); policy = per_cpu(cpufreq_cpu_data, cpu);
read_unlock_irqrestore(&cpufreq_driver_lock, flags); read_unlock_irqrestore(&cpufreq_driver_lock, flags);
cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE); cpufreq_freq_transition_begin(policy, &freqs);
cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE); cpufreq_freq_transition_end(policy, &freqs, 0);
} }
/** /**
...@@ -1868,8 +1868,7 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy, ...@@ -1868,8 +1868,7 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy,
pr_debug("%s: cpu: %d, oldfreq: %u, new freq: %u\n", pr_debug("%s: cpu: %d, oldfreq: %u, new freq: %u\n",
__func__, policy->cpu, freqs.old, freqs.new); __func__, policy->cpu, freqs.old, freqs.new);
cpufreq_notify_transition(policy, &freqs, cpufreq_freq_transition_begin(policy, &freqs);
CPUFREQ_PRECHANGE);
} }
retval = cpufreq_driver->target_index(policy, index); retval = cpufreq_driver->target_index(policy, index);
...@@ -1878,7 +1877,7 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy, ...@@ -1878,7 +1877,7 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy,
__func__, retval); __func__, retval);
if (notify) if (notify)
cpufreq_notify_post_transition(policy, &freqs, retval); cpufreq_freq_transition_end(policy, &freqs, retval);
} }
out: out:
......
...@@ -219,7 +219,7 @@ static int exynos_target(struct cpufreq_policy *policy, unsigned int index) ...@@ -219,7 +219,7 @@ static int exynos_target(struct cpufreq_policy *policy, unsigned int index)
freqs.old = policy->cur; freqs.old = policy->cur;
freqs.new = freq_table[index].frequency; freqs.new = freq_table[index].frequency;
cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE); cpufreq_freq_transition_begin(policy, &freqs);
/* Set the target frequency in all C0_3_PSTATE register */ /* Set the target frequency in all C0_3_PSTATE register */
for_each_cpu(i, policy->cpus) { for_each_cpu(i, policy->cpus) {
...@@ -258,7 +258,7 @@ static void exynos_cpufreq_work(struct work_struct *work) ...@@ -258,7 +258,7 @@ static void exynos_cpufreq_work(struct work_struct *work)
dev_crit(dvfs_info->dev, "New frequency out of range\n"); dev_crit(dvfs_info->dev, "New frequency out of range\n");
freqs.new = freqs.old; freqs.new = freqs.old;
} }
cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE); cpufreq_freq_transition_end(policy, &freqs, 0);
cpufreq_cpu_put(policy); cpufreq_cpu_put(policy);
mutex_unlock(&cpufreq_lock); mutex_unlock(&cpufreq_lock);
......
...@@ -265,7 +265,7 @@ static void gx_set_cpuspeed(struct cpufreq_policy *policy, unsigned int khz) ...@@ -265,7 +265,7 @@ static void gx_set_cpuspeed(struct cpufreq_policy *policy, unsigned int khz)
freqs.new = new_khz; freqs.new = new_khz;
cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE); cpufreq_freq_transition_begin(policy, &freqs);
local_irq_save(flags); local_irq_save(flags);
if (new_khz != stock_freq) { if (new_khz != stock_freq) {
...@@ -314,7 +314,7 @@ static void gx_set_cpuspeed(struct cpufreq_policy *policy, unsigned int khz) ...@@ -314,7 +314,7 @@ static void gx_set_cpuspeed(struct cpufreq_policy *policy, unsigned int khz)
gx_params->pci_suscfg = suscfg; gx_params->pci_suscfg = suscfg;
cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE); cpufreq_freq_transition_end(policy, &freqs, 0);
pr_debug("suspend modulation w/ duration of ON:%d us, OFF:%d us\n", pr_debug("suspend modulation w/ duration of ON:%d us, OFF:%d us\n",
gx_params->on_duration * 32, gx_params->off_duration * 32); gx_params->on_duration * 32, gx_params->off_duration * 32);
......
...@@ -122,7 +122,7 @@ static int integrator_set_target(struct cpufreq_policy *policy, ...@@ -122,7 +122,7 @@ static int integrator_set_target(struct cpufreq_policy *policy,
return 0; return 0;
} }
cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE); cpufreq_freq_transition_begin(policy, &freqs);
cm_osc = __raw_readl(cm_base + INTEGRATOR_HDR_OSC_OFFSET); cm_osc = __raw_readl(cm_base + INTEGRATOR_HDR_OSC_OFFSET);
...@@ -143,7 +143,7 @@ static int integrator_set_target(struct cpufreq_policy *policy, ...@@ -143,7 +143,7 @@ static int integrator_set_target(struct cpufreq_policy *policy,
*/ */
set_cpus_allowed(current, cpus_allowed); set_cpus_allowed(current, cpus_allowed);
cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE); cpufreq_freq_transition_end(policy, &freqs, 0);
return 0; return 0;
} }
......
...@@ -269,7 +269,7 @@ static void longhaul_setstate(struct cpufreq_policy *policy, ...@@ -269,7 +269,7 @@ static void longhaul_setstate(struct cpufreq_policy *policy,
freqs.old = calc_speed(longhaul_get_cpu_mult()); freqs.old = calc_speed(longhaul_get_cpu_mult());
freqs.new = speed; freqs.new = speed;
cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE); cpufreq_freq_transition_begin(policy, &freqs);
pr_debug("Setting to FSB:%dMHz Mult:%d.%dx (%s)\n", pr_debug("Setting to FSB:%dMHz Mult:%d.%dx (%s)\n",
fsb, mult/10, mult%10, print_speed(speed/1000)); fsb, mult/10, mult%10, print_speed(speed/1000));
...@@ -386,7 +386,7 @@ static void longhaul_setstate(struct cpufreq_policy *policy, ...@@ -386,7 +386,7 @@ static void longhaul_setstate(struct cpufreq_policy *policy,
} }
} }
/* Report true CPU frequency */ /* Report true CPU frequency */
cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE); cpufreq_freq_transition_end(policy, &freqs, 0);
if (!bm_timeout) if (!bm_timeout)
printk(KERN_INFO PFX "Warning: Timeout while waiting for " printk(KERN_INFO PFX "Warning: Timeout while waiting for "
......
...@@ -215,7 +215,7 @@ static int pcc_cpufreq_target(struct cpufreq_policy *policy, ...@@ -215,7 +215,7 @@ static int pcc_cpufreq_target(struct cpufreq_policy *policy,
freqs.old = policy->cur; freqs.old = policy->cur;
freqs.new = target_freq; freqs.new = target_freq;
cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE); cpufreq_freq_transition_begin(policy, &freqs);
input_buffer = 0x1 | (((target_freq * 100) input_buffer = 0x1 | (((target_freq * 100)
/ (ioread32(&pcch_hdr->nominal) * 1000)) << 8); / (ioread32(&pcch_hdr->nominal) * 1000)) << 8);
...@@ -231,7 +231,7 @@ static int pcc_cpufreq_target(struct cpufreq_policy *policy, ...@@ -231,7 +231,7 @@ static int pcc_cpufreq_target(struct cpufreq_policy *policy,
status = ioread16(&pcch_hdr->status); status = ioread16(&pcch_hdr->status);
iowrite16(0, &pcch_hdr->status); iowrite16(0, &pcch_hdr->status);
cpufreq_notify_post_transition(policy, &freqs, status != CMD_COMPLETE); cpufreq_freq_transition_end(policy, &freqs, status != CMD_COMPLETE);
spin_unlock(&pcc_lock); spin_unlock(&pcc_lock);
if (status != CMD_COMPLETE) { if (status != CMD_COMPLETE) {
......
...@@ -148,11 +148,11 @@ static int powernow_k6_target(struct cpufreq_policy *policy, ...@@ -148,11 +148,11 @@ static int powernow_k6_target(struct cpufreq_policy *policy,
freqs.old = busfreq * powernow_k6_get_cpu_multiplier(); freqs.old = busfreq * powernow_k6_get_cpu_multiplier();
freqs.new = busfreq * clock_ratio[best_i].driver_data; freqs.new = busfreq * clock_ratio[best_i].driver_data;
cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE); cpufreq_freq_transition_begin(policy, &freqs);
powernow_k6_set_cpu_multiplier(best_i); powernow_k6_set_cpu_multiplier(best_i);
cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE); cpufreq_freq_transition_end(policy, &freqs, 0);
return 0; return 0;
} }
......
...@@ -269,7 +269,7 @@ static int powernow_target(struct cpufreq_policy *policy, unsigned int index) ...@@ -269,7 +269,7 @@ static int powernow_target(struct cpufreq_policy *policy, unsigned int index)
freqs.new = powernow_table[index].frequency; freqs.new = powernow_table[index].frequency;
cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE); cpufreq_freq_transition_begin(policy, &freqs);
/* Now do the magic poking into the MSRs. */ /* Now do the magic poking into the MSRs. */
...@@ -290,7 +290,7 @@ static int powernow_target(struct cpufreq_policy *policy, unsigned int index) ...@@ -290,7 +290,7 @@ static int powernow_target(struct cpufreq_policy *policy, unsigned int index)
if (have_a0 == 1) if (have_a0 == 1)
local_irq_enable(); local_irq_enable();
cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE); cpufreq_freq_transition_end(policy, &freqs, 0);
return 0; return 0;
} }
......
...@@ -963,9 +963,9 @@ static int transition_frequency_fidvid(struct powernow_k8_data *data, ...@@ -963,9 +963,9 @@ static int transition_frequency_fidvid(struct powernow_k8_data *data,
policy = cpufreq_cpu_get(smp_processor_id()); policy = cpufreq_cpu_get(smp_processor_id());
cpufreq_cpu_put(policy); cpufreq_cpu_put(policy);
cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE); cpufreq_freq_transition_begin(policy, &freqs);
res = transition_fid_vid(data, fid, vid); res = transition_fid_vid(data, fid, vid);
cpufreq_notify_post_transition(policy, &freqs, res); cpufreq_freq_transition_end(policy, &freqs, res);
return res; return res;
} }
......
...@@ -217,7 +217,7 @@ static int s3c_cpufreq_settarget(struct cpufreq_policy *policy, ...@@ -217,7 +217,7 @@ static int s3c_cpufreq_settarget(struct cpufreq_policy *policy,
s3c_cpufreq_updateclk(clk_pclk, cpu_new.freq.pclk); s3c_cpufreq_updateclk(clk_pclk, cpu_new.freq.pclk);
/* start the frequency change */ /* start the frequency change */
cpufreq_notify_transition(policy, &freqs.freqs, CPUFREQ_PRECHANGE); cpufreq_freq_transition_begin(policy, &freqs.freqs);
/* If hclk is staying the same, then we do not need to /* If hclk is staying the same, then we do not need to
* re-write the IO or the refresh timings whilst we are changing * re-write the IO or the refresh timings whilst we are changing
...@@ -261,7 +261,7 @@ static int s3c_cpufreq_settarget(struct cpufreq_policy *policy, ...@@ -261,7 +261,7 @@ static int s3c_cpufreq_settarget(struct cpufreq_policy *policy,
local_irq_restore(flags); local_irq_restore(flags);
/* notify everyone we've done this */ /* notify everyone we've done this */
cpufreq_notify_transition(policy, &freqs.freqs, CPUFREQ_POSTCHANGE); cpufreq_freq_transition_end(policy, &freqs.freqs, 0);
s3c_freq_dbg("%s: finished\n", __func__); s3c_freq_dbg("%s: finished\n", __func__);
return 0; return 0;
......
...@@ -68,10 +68,10 @@ static int sh_cpufreq_target(struct cpufreq_policy *policy, ...@@ -68,10 +68,10 @@ static int sh_cpufreq_target(struct cpufreq_policy *policy,
freqs.new = (freq + 500) / 1000; freqs.new = (freq + 500) / 1000;
freqs.flags = 0; freqs.flags = 0;
cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE); cpufreq_freq_transition_begin(policy, &freqs);
set_cpus_allowed_ptr(current, &cpus_allowed); set_cpus_allowed_ptr(current, &cpus_allowed);
clk_set_rate(cpuclk, freq); clk_set_rate(cpuclk, freq);
cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE); cpufreq_freq_transition_end(policy, &freqs, 0);
dev_dbg(dev, "set frequency %lu Hz\n", freq); dev_dbg(dev, "set frequency %lu Hz\n", freq);
......
...@@ -44,9 +44,9 @@ static int ucv2_target(struct cpufreq_policy *policy, ...@@ -44,9 +44,9 @@ static int ucv2_target(struct cpufreq_policy *policy,
freqs.old = policy->cur; freqs.old = policy->cur;
freqs.new = target_freq; freqs.new = target_freq;
cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE); cpufreq_freq_transition_begin(policy, &freqs);
ret = clk_set_rate(policy->mclk, target_freq * 1000); ret = clk_set_rate(policy->mclk, target_freq * 1000);
cpufreq_notify_post_transition(policy, &freqs, ret); cpufreq_freq_transition_end(policy, &freqs, ret);
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment