Commit 71898748 authored by Andrey Panin's avatar Andrey Panin Committed by Linus Torvalds

[PATCH] dmi_scan: port powernow-k7 driver to new DMI probing

This patch ports powernow-k7 driver to new DMI probing API.
Signed-off-by: default avatarAndrey Panin <pazke@donpac.ru>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent c92c8fc4
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include <linux/cpufreq.h> #include <linux/cpufreq.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/dmi.h>
#include <asm/msr.h> #include <asm/msr.h>
#include <asm/timex.h> #include <asm/timex.h>
...@@ -554,6 +555,31 @@ static unsigned int powernow_get(unsigned int cpu) ...@@ -554,6 +555,31 @@ static unsigned int powernow_get(unsigned int cpu)
} }
static int __init acer_cpufreq_pst(struct dmi_system_id *d)
{
printk(KERN_WARNING "%s laptop with broken PST tables in BIOS detected.\n", d->ident);
printk(KERN_WARNING "You need to downgrade to 3A21 (09/09/2002), or try a newer BIOS than 3A71 (01/20/2003)\n");
printk(KERN_WARNING "cpufreq scaling has been disabled as a result of this.\n");
return 0;
}
/*
* Some Athlon laptops have really fucked PST tables.
* A BIOS update is all that can save them.
* Mention this, and disable cpufreq.
*/
static struct dmi_system_id __initdata powernow_dmi_table[] = {
{
.callback = acer_cpufreq_pst,
.ident = "Acer Aspire",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Insyde Software"),
DMI_MATCH(DMI_BIOS_VERSION, "3A71"),
},
},
{ }
};
static int __init powernow_cpu_init (struct cpufreq_policy *policy) static int __init powernow_cpu_init (struct cpufreq_policy *policy)
{ {
union msr_fidvidstatus fidvidstatus; union msr_fidvidstatus fidvidstatus;
...@@ -572,7 +598,7 @@ static int __init powernow_cpu_init (struct cpufreq_policy *policy) ...@@ -572,7 +598,7 @@ static int __init powernow_cpu_init (struct cpufreq_policy *policy)
} }
dprintk(KERN_INFO PFX "FSB: %3d.%03d MHz\n", fsb/1000, fsb%1000); dprintk(KERN_INFO PFX "FSB: %3d.%03d MHz\n", fsb/1000, fsb%1000);
if ((dmi_broken & BROKEN_CPUFREQ) || acpi_force) { if (dmi_check_system(powernow_dmi_table) || acpi_force) {
printk (KERN_INFO PFX "PSB/PST known to be broken. Trying ACPI instead\n"); printk (KERN_INFO PFX "PSB/PST known to be broken. Trying ACPI instead\n");
result = powernow_acpi_init(); result = powernow_acpi_init();
} else { } else {
......
...@@ -386,15 +386,6 @@ static __init int broken_ps2_resume(struct dmi_blacklist *d) ...@@ -386,15 +386,6 @@ static __init int broken_ps2_resume(struct dmi_blacklist *d)
return 0; return 0;
} }
static __init int acer_cpufreq_pst(struct dmi_blacklist *d)
{
printk(KERN_WARNING "%s laptop with broken PST tables in BIOS detected.\n", d->ident);
printk(KERN_WARNING "You need to downgrade to 3A21 (09/09/2002), or try a newer BIOS than 3A71 (01/20/2003)\n");
printk(KERN_WARNING "cpufreq scaling has been disabled as a result of this.\n");
dmi_broken |= BROKEN_CPUFREQ;
return 0;
}
/* /*
* Simple "print if true" callback * Simple "print if true" callback
...@@ -747,17 +738,6 @@ static __initdata struct dmi_blacklist dmi_blacklist[]={ ...@@ -747,17 +738,6 @@ static __initdata struct dmi_blacklist dmi_blacklist[]={
NO_MATCH, NO_MATCH, NO_MATCH NO_MATCH, NO_MATCH, NO_MATCH
} }, } },
/*
* Some Athlon laptops have really fucked PST tables.
* A BIOS update is all that can save them.
* Mention this, and disable cpufreq.
*/
{ acer_cpufreq_pst, "Acer Aspire", {
MATCH(DMI_SYS_VENDOR, "Insyde Software"),
MATCH(DMI_BIOS_VERSION, "3A71"),
NO_MATCH, NO_MATCH,
} },
#ifdef CONFIG_ACPI_BOOT #ifdef CONFIG_ACPI_BOOT
/* /*
* If your system is blacklisted here, but you find that acpi=force * If your system is blacklisted here, but you find that acpi=force
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment