| From 0373ca74831b0f93cd4cdbf7ad3aec3c33a479a5 Mon Sep 17 00:00:00 2001 |
| From: Viresh Kumar <viresh.kumar@linaro.org> |
| Date: Fri, 23 Feb 2018 09:38:28 +0530 |
| Subject: cpufreq: s3c24xx: Fix broken s3c_cpufreq_init() |
| |
| From: Viresh Kumar <viresh.kumar@linaro.org> |
| |
| commit 0373ca74831b0f93cd4cdbf7ad3aec3c33a479a5 upstream. |
| |
| commit a307a1e6bc0d "cpufreq: s3c: use cpufreq_generic_init()" |
| accidentally broke cpufreq on s3c2410 and s3c2412. |
| |
| These two platforms don't have a CPU frequency table and used to skip |
| calling cpufreq_table_validate_and_show() for them. But with the |
| above commit, we started calling it unconditionally and that will |
| eventually fail as the frequency table pointer is NULL. |
| |
| Fix this by calling cpufreq_table_validate_and_show() conditionally |
| again. |
| |
| Fixes: a307a1e6bc0d "cpufreq: s3c: use cpufreq_generic_init()" |
| Cc: 3.13+ <stable@vger.kernel.org> # v3.13+ |
| Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> |
| Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/cpufreq/s3c24xx-cpufreq.c | 8 +++++++- |
| 1 file changed, 7 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/cpufreq/s3c24xx-cpufreq.c |
| +++ b/drivers/cpufreq/s3c24xx-cpufreq.c |
| @@ -351,7 +351,13 @@ struct clk *s3c_cpufreq_clk_get(struct d |
| static int s3c_cpufreq_init(struct cpufreq_policy *policy) |
| { |
| policy->clk = clk_arm; |
| - return cpufreq_generic_init(policy, ftab, cpu_cur.info->latency); |
| + |
| + policy->cpuinfo.transition_latency = cpu_cur.info->latency; |
| + |
| + if (ftab) |
| + return cpufreq_table_validate_and_show(policy, ftab); |
| + |
| + return 0; |
| } |
| |
| static int __init s3c_cpufreq_initclks(void) |