From c5611bd12ac36eabb00b43b1c79e1ad95852eaf5 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Mon, 5 Jan 2004 18:33:27 +0000 Subject: [PATCH] [CPUFREQ] use latency in nanoseconds sometimes nanoseconds are used, sometimes microseconds, sometimes even something else. --- arch/arm/mach-integrator/cpu.c | 2 +- arch/i386/kernel/cpu/cpufreq/acpi.c | 4 ++-- arch/i386/kernel/cpu/cpufreq/p4-clockmod.c | 2 +- arch/i386/kernel/cpu/cpufreq/powernow-k7.c | 6 +++++- arch/i386/kernel/cpu/cpufreq/powernow-k8.c | 7 ++++--- include/linux/cpufreq.h | 2 +- 6 files changed, 14 insertions(+), 9 deletions(-) diff --git a/arch/arm/mach-integrator/cpu.c b/arch/arm/mach-integrator/cpu.c index 69456d0f095d5..a33722ede48a9 100644 --- a/arch/arm/mach-integrator/cpu.c +++ b/arch/arm/mach-integrator/cpu.c @@ -172,7 +172,7 @@ static int integrator_cpufreq_init(struct cpufreq_policy *policy) policy->governor = CPUFREQ_DEFAULT_GOVERNOR; policy->cpuinfo.max_freq = 160000; policy->cpuinfo.min_freq = 12000; - policy->cpuinfo.transition_latency = 1000; /* 1 ms, assumed */ + policy->cpuinfo.transition_latency = 1000000; /* 1 ms, assumed */ policy->cur = policy->min = policy->max = icst525_khz(&cclk_params, vco); /* current freq */ diff --git a/arch/i386/kernel/cpu/cpufreq/acpi.c b/arch/i386/kernel/cpu/cpufreq/acpi.c index 1da77a79043eb..776ac256fb6eb 100644 --- a/arch/i386/kernel/cpu/cpufreq/acpi.c +++ b/arch/i386/kernel/cpu/cpufreq/acpi.c @@ -578,8 +578,8 @@ acpi_cpufreq_cpu_init ( /* detect transition latency */ policy->cpuinfo.transition_latency = 0; for (i=0;istate_count;i++) { - if (perf->states[i].transition_latency > policy->cpuinfo.transition_latency) - policy->cpuinfo.transition_latency = perf->states[i].transition_latency; + if ((perf->states[i].transition_latency * 1000) > policy->cpuinfo.transition_latency) + policy->cpuinfo.transition_latency = perf->states[i].transition_latency * 1000; } policy->governor = CPUFREQ_DEFAULT_GOVERNOR; policy->cur = perf->states[pr->limit.state.px].core_frequency * 1000; diff --git a/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c b/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c index 06cb5d7b4ba16..d8837afdf69d7 100644 --- a/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c +++ b/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c @@ -255,7 +255,7 @@ static int cpufreq_p4_cpu_init(struct cpufreq_policy *policy) /* cpuinfo and default policy values */ policy->governor = CPUFREQ_DEFAULT_GOVERNOR; - policy->cpuinfo.transition_latency = 1000; + policy->cpuinfo.transition_latency = 1000000; /* assumed */ policy->cur = stock_freq; return cpufreq_frequency_table_cpuinfo(policy, &p4clockmod_table[0]); diff --git a/arch/i386/kernel/cpu/cpufreq/powernow-k7.c b/arch/i386/kernel/cpu/cpufreq/powernow-k7.c index 52ea4bedba0d4..ee99237eb2e30 100644 --- a/arch/i386/kernel/cpu/cpufreq/powernow-k7.c +++ b/arch/i386/kernel/cpu/cpufreq/powernow-k7.c @@ -387,7 +387,11 @@ static int __init powernow_cpu_init (struct cpufreq_policy *policy) minimum_speed, maximum_speed); policy->governor = CPUFREQ_DEFAULT_GOVERNOR; - policy->cpuinfo.transition_latency = latency; + + /* latency is in 10 ns (look for SGTC above) for each VID + * and FID transition, so multiply that value with 20 */ + policy->cpuinfo.transition_latency = latency * 20; + policy->cur = maximum_speed; return cpufreq_frequency_table_cpuinfo(policy, powernow_table); diff --git a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c index b7e0945365a0f..229fbe33ce2fd 100644 --- a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c +++ b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c @@ -954,9 +954,10 @@ powernowk8_cpu_init(struct cpufreq_policy *pol) pol->governor = CPUFREQ_DEFAULT_GOVERNOR; - /* Take a crude guess here. */ - pol->cpuinfo.transition_latency = ((rvo + 8) * vstable * VST_UNITS_20US) - + (3 * (1 << irt) * 10); + /* Take a crude guess here. + * That guess was in microseconds, so multply with 1000 */ + pol->cpuinfo.transition_latency = (((rvo + 8) * vstable * VST_UNITS_20US) + + (3 * (1 << irt) * 10)) * 1000; if (query_current_values_with_pending_wait()) return -EIO; diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index 94a53691e2401..bbc983dc8913c 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h @@ -57,7 +57,7 @@ struct cpufreq_governor; struct cpufreq_cpuinfo { unsigned int max_freq; unsigned int min_freq; - unsigned int transition_latency; /* in 10^(-9) s */ + unsigned int transition_latency; /* in 10^(-9) s = nanoseconds */ }; struct cpufreq_real_policy { -- 2.53.0