summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafał Bilski <rafalbilski@interia.pl>2006-08-13 09:16:20 +0200
committerDave Jones <davej@redhat.com>2006-08-14 01:18:53 -0400
commit6595413fc9453a211f4b5d5cc42f0bbf3daa615b (patch)
treecb0b9b0b1dd91c073eca7e4b26de3a4439dff66d
parent179da8e6e8903a8cdb19bb12672d50dc33f0fde6 (diff)
downloadlinux-stable-6595413fc9453a211f4b5d5cc42f0bbf3daa615b.tar.gz
linux-stable-6595413fc9453a211f4b5d5cc42f0bbf3daa615b.tar.bz2
linux-stable-6595413fc9453a211f4b5d5cc42f0bbf3daa615b.zip
[CPUFREQ] Longhaul - Add ignore_latency option
Some laptops with VIA C3 processor, CLE266 chipset and AMI BIOS have incorrect latency values in FADT table. These laptops seems to be C3 capable, but latency values are to big: 101 for C2 and 1017 for C3. This option will allow user to skip C3 latency test but not C3 address test. AMI BIOS is setting C3 address to correct value in DSDT table. Signed-off-by: Rafał Bilski <rafalbilski@interia.pl> Signed-off-by: Dave Jones <davej@redhat.com>
-rw-r--r--arch/i386/kernel/cpu/cpufreq/longhaul.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/i386/kernel/cpu/cpufreq/longhaul.c b/arch/i386/kernel/cpu/cpufreq/longhaul.c
index 83a8793f1db8..43bbf948d45d 100644
--- a/arch/i386/kernel/cpu/cpufreq/longhaul.c
+++ b/arch/i386/kernel/cpu/cpufreq/longhaul.c
@@ -65,7 +65,7 @@ static int port22_en = 0;
/* Module parameters */
static int dont_scale_voltage;
-
+static int ignore_latency = 0;
#define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_DRIVER, "longhaul", msg)
@@ -665,8 +665,10 @@ static int __init longhaul_cpu_init(struct cpufreq_policy *policy)
if (longhaul_version == TYPE_POWERSAVER) {
/* Check ACPI support for C3 state */
cx = &pr->power.states[ACPI_STATE_C3];
- if (cx->address == 0 || cx->latency > 1000)
+ if (cx->address == 0 ||
+ (cx->latency > 1000 && ignore_latency == 0) )
goto err_acpi;
+
} else {
/* Check ACPI support for bus master arbiter disable */
if (!pr->flags.bm_control) {
@@ -773,6 +775,8 @@ static void __exit longhaul_exit(void)
module_param (dont_scale_voltage, int, 0644);
MODULE_PARM_DESC(dont_scale_voltage, "Don't scale voltage of processor");
+module_param(ignore_latency, int, 0644);
+MODULE_PARM_DESC(ignore_latency, "Skip ACPI C3 latency test");
MODULE_AUTHOR ("Dave Jones <davej@codemonkey.org.uk>");
MODULE_DESCRIPTION ("Longhaul driver for VIA Cyrix processors.");
@@ -780,4 +784,3 @@ MODULE_LICENSE ("GPL");
late_initcall(longhaul_init);
module_exit(longhaul_exit);
-