cpufreq: ppc-corenet-cpu-freq: do_div use quotient
authorEd Swarthout <Ed.Swarthout@freescale.com>
Thu, 5 Jun 2014 23:56:17 +0000 (18:56 -0500)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 6 Jun 2014 20:50:43 +0000 (22:50 +0200)
Commit 6712d2931933 (cpufreq: ppc-corenet-cpufreq: Fix __udivdi3 modpost
error) used the remainder from do_div instead of the quotient.  Fix that
and add one to ensure minimum is met.

Fixes: 6712d2931933 (cpufreq: ppc-corenet-cpufreq: Fix __udivdi3 modpost error)
Signed-off-by: Ed Swarthout <Ed.Swarthout@freescale.com>
Cc: 3.15+ <stable@vger.kernel.org> # 3.15+
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpufreq/ppc-corenet-cpufreq.c

index 0af618abebafa4b44b323d1811c1f885a52e0beb..3607070797af307f959d0f413a2497acd262ba95 100644 (file)
@@ -138,7 +138,7 @@ static int corenet_cpufreq_cpu_init(struct cpufreq_policy *policy)
        struct cpufreq_frequency_table *table;
        struct cpu_data *data;
        unsigned int cpu = policy->cpu;
-       u64 transition_latency_hz;
+       u64 u64temp;
 
        np = of_get_cpu_node(cpu, NULL);
        if (!np)
@@ -206,9 +206,10 @@ static int corenet_cpufreq_cpu_init(struct cpufreq_policy *policy)
        for_each_cpu(i, per_cpu(cpu_mask, cpu))
                per_cpu(cpu_data, i) = data;
 
-       transition_latency_hz = 12ULL * NSEC_PER_SEC;
-       policy->cpuinfo.transition_latency =
-               do_div(transition_latency_hz, fsl_get_sys_freq());
+       /* Minimum transition latency is 12 platform clocks */
+       u64temp = 12ULL * NSEC_PER_SEC;
+       do_div(u64temp, fsl_get_sys_freq());
+       policy->cpuinfo.transition_latency = u64temp + 1;
 
        of_node_put(np);