aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386/kernel/cpu
diff options
context:
space:
mode:
authorRafał Bilski <rafalbilski@interia.pl>2006-08-13 03:16:20 -0400
committerDave Jones <davej@redhat.com>2006-08-14 01:18:53 -0400
commit6595413fc9453a211f4b5d5cc42f0bbf3daa615b (patch)
treecb0b9b0b1dd91c073eca7e4b26de3a4439dff66d /arch/i386/kernel/cpu
parent179da8e6e8903a8cdb19bb12672d50dc33f0fde6 (diff)
[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>
Diffstat (limited to 'arch/i386/kernel/cpu')
-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;
65 65
66/* Module parameters */ 66/* Module parameters */
67static int dont_scale_voltage; 67static int dont_scale_voltage;
68 68static int ignore_latency = 0;
69 69
70#define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_DRIVER, "longhaul", msg) 70#define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_DRIVER, "longhaul", msg)
71 71
@@ -665,8 +665,10 @@ static int __init longhaul_cpu_init(struct cpufreq_policy *policy)
665 if (longhaul_version == TYPE_POWERSAVER) { 665 if (longhaul_version == TYPE_POWERSAVER) {
666 /* Check ACPI support for C3 state */ 666 /* Check ACPI support for C3 state */
667 cx = &pr->power.states[ACPI_STATE_C3]; 667 cx = &pr->power.states[ACPI_STATE_C3];
668 if (cx->address == 0 || cx->latency > 1000) 668 if (cx->address == 0 ||
669 (cx->latency > 1000 && ignore_latency == 0) )
669 goto err_acpi; 670 goto err_acpi;
671
670 } else { 672 } else {
671 /* Check ACPI support for bus master arbiter disable */ 673 /* Check ACPI support for bus master arbiter disable */
672 if (!pr->flags.bm_control) { 674 if (!pr->flags.bm_control) {
@@ -773,6 +775,8 @@ static void __exit longhaul_exit(void)
773 775
774module_param (dont_scale_voltage, int, 0644); 776module_param (dont_scale_voltage, int, 0644);
775MODULE_PARM_DESC(dont_scale_voltage, "Don't scale voltage of processor"); 777MODULE_PARM_DESC(dont_scale_voltage, "Don't scale voltage of processor");
778module_param(ignore_latency, int, 0644);
779MODULE_PARM_DESC(ignore_latency, "Skip ACPI C3 latency test");
776 780
777MODULE_AUTHOR ("Dave Jones <davej@codemonkey.org.uk>"); 781MODULE_AUTHOR ("Dave Jones <davej@codemonkey.org.uk>");
778MODULE_DESCRIPTION ("Longhaul driver for VIA Cyrix processors."); 782MODULE_DESCRIPTION ("Longhaul driver for VIA Cyrix processors.");
@@ -780,4 +784,3 @@ MODULE_LICENSE ("GPL");
780 784
781late_initcall(longhaul_init); 785late_initcall(longhaul_init);
782module_exit(longhaul_exit); 786module_exit(longhaul_exit);
783