* [PATCH 9/13] 2.6.7-rc1-mm1, Port reboot related quirks to new DMI probing
[not found] <1085745352794@donpac.ru>
@ 2004-05-28 11:55 ` Andrey Panin
2004-05-28 11:55 ` [PATCH 10/13] 2.6.7-rc1-mm1, Port powernow-k7 driver " Andrey Panin
0 siblings, 1 reply; 5+ messages in thread
From: Andrey Panin @ 2004-05-28 11:55 UTC (permalink / raw)
To: Andrew Morton, linux-kernel
diff -urpN -X /usr/share/dontdiff linux-2.6.7-rc1-mm1.vanilla/arch/i386/kernel/dmi_scan.c linux-2.6.7-rc1-mm1/arch/i386/kernel/dmi_scan.c
--- linux-2.6.7-rc1-mm1.vanilla/arch/i386/kernel/dmi_scan.c Thu Apr 29 00:08:50 2004
+++ linux-2.6.7-rc1-mm1/arch/i386/kernel/dmi_scan.c Thu Apr 29 00:09:08 2004
@@ -155,51 +155,6 @@ static void __init dmi_save_ident(struct
printk(KERN_ERR "dmi_save_ident: out of memory.\n");
}
-/*
- * Reboot options and system auto-detection code provided by
- * Dell Inc. so their systems "just work". :-)
- */
-
-/*
- * Some machines require the "reboot=b" commandline option, this quirk makes that automatic.
- */
-static __init int set_bios_reboot(struct dmi_system_id *d)
-{
- extern int reboot_thru_bios;
- if (reboot_thru_bios == 0)
- {
- reboot_thru_bios = 1;
- printk(KERN_INFO "%s series board detected. Selecting BIOS-method for reboots.\n", d->ident);
- }
- return 0;
-}
-
-/*
- * Some machines require the "reboot=s" commandline option, this quirk makes that automatic.
- */
-static __init int set_smp_reboot(struct dmi_system_id *d)
-{
-#ifdef CONFIG_SMP
- extern int reboot_smp;
- if (reboot_smp == 0)
- {
- reboot_smp = 1;
- printk(KERN_INFO "%s series board detected. Selecting SMP-method for reboots.\n", d->ident);
- }
-#endif
- return 0;
-}
-
-/*
- * Some machines require the "reboot=b,s" commandline option, this quirk makes that automatic.
- */
-static __init int set_smp_bios_reboot(struct dmi_system_id *d)
-{
- set_smp_reboot(d);
- set_bios_reboot(d);
- return 0;
-}
-
/*
* Some machines, usually laptops, can't handle an enabled local APIC.
* The symptoms include hangs or reboots when suspending or resuming,
@@ -316,19 +271,7 @@ static __init int disable_acpi_pci(struc
*/
static __initdata struct dmi_system_id dmi_blacklist[]={
- { set_smp_bios_reboot, "Dell PowerEdge 1300", { /* Handle problems with rebooting on Dell 1300's */
- DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
- DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 1300/"),
- } },
- { set_bios_reboot, "Dell PowerEdge 300", { /* Handle problems with rebooting on Dell 300's */
- DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
- DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 300/"),
- } },
- { set_bios_reboot, "Dell PowerEdge 2400", { /* Handle problems with rebooting on Dell 2400's */
- DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
- DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 2400"),
- } },
-
+
/* Machines which have problems handling enabled local APICs */
{ local_apic_kills_bios, "Dell Inspiron", {
diff -urpN -X /usr/share/dontdiff linux-2.6.7-rc1-mm1.vanilla/arch/i386/kernel/reboot.c linux-2.6.7-rc1-mm1/arch/i386/kernel/reboot.c
--- linux-2.6.7-rc1-mm1.vanilla/arch/i386/kernel/reboot.c Wed Apr 28 22:56:07 2004
+++ linux-2.6.7-rc1-mm1/arch/i386/kernel/reboot.c Thu Apr 29 00:09:08 2004
@@ -9,6 +9,7 @@
#include <linux/interrupt.h>
#include <linux/mc146818rtc.h>
#include <linux/efi.h>
+#include <linux/dmi.h>
#include <asm/uaccess.h>
#include <asm/apic.h>
#include "mach_reboot.h"
@@ -66,6 +67,83 @@ static int __init reboot_setup(char *str
}
__setup("reboot=", reboot_setup);
+
+/*
+ * Reboot options and system auto-detection code provided by
+ * Dell Inc. so their systems "just work". :-)
+ */
+
+/*
+ * Some machines require the "reboot=b" commandline option, this quirk makes that automatic.
+ */
+static int __init set_bios_reboot(struct dmi_system_id *d)
+{
+ if (!reboot_thru_bios) {
+ reboot_thru_bios = 1;
+ printk(KERN_INFO "%s series board detected. Selecting BIOS-method for reboots.\n", d->ident);
+ }
+ return 0;
+}
+
+/*
+ * Some machines require the "reboot=s" commandline option, this quirk makes that automatic.
+ */
+static int __init set_smp_reboot(struct dmi_system_id *d)
+{
+#ifdef CONFIG_SMP
+ if (!reboot_smp) {
+ reboot_smp = 1;
+ printk(KERN_INFO "%s series board detected. Selecting SMP-method for reboots.\n", d->ident);
+ }
+#endif
+ return 0;
+}
+
+/*
+ * Some machines require the "reboot=b,s" commandline option, this quirk makes that automatic.
+ */
+static int __init set_smp_bios_reboot(struct dmi_system_id *d)
+{
+ set_smp_reboot(d);
+ set_bios_reboot(d);
+ return 0;
+}
+
+static struct dmi_system_id __initdata reboot_dmi_table[] = {
+ { /* Handle problems with rebooting on Dell 1300's */
+ .callback = set_smp_bios_reboot,
+ .ident = "Dell PowerEdge 1300",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 1300/"),
+ },
+ },
+ { /* Handle problems with rebooting on Dell 300's */
+ .callback = set_bios_reboot,
+ .ident = "Dell PowerEdge 300",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 300/"),
+ },
+ },
+ { /* Handle problems with rebooting on Dell 2400's */
+ .callback = set_bios_reboot,
+ .ident = "Dell PowerEdge 2400",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 2400"),
+ },
+ },
+ { }
+};
+
+static int reboot_init(void)
+{
+ dmi_check_system(reboot_dmi_table);
+ return 0;
+}
+
+core_initcall(reboot_init);
/* The following code and data reboots the machine by switching to real
mode and jumping to the BIOS reset entry point, as if the CPU has
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 10/13] 2.6.7-rc1-mm1, Port powernow-k7 driver to new DMI probing
2004-05-28 11:55 ` [PATCH 9/13] 2.6.7-rc1-mm1, Port reboot related quirks to new DMI probing Andrey Panin
@ 2004-05-28 11:55 ` Andrey Panin
2004-05-28 11:56 ` [PATCH 11/13] 2.6.7-rc1-mm1, Port local APIC quirks " Andrey Panin
0 siblings, 1 reply; 5+ messages in thread
From: Andrey Panin @ 2004-05-28 11:55 UTC (permalink / raw)
To: Andrew Morton, linux-kernel
diff -urpN -X /usr/share/dontdiff linux-2.6.7-rc1-mm1.vanilla/arch/i386/kernel/cpu/cpufreq/powernow-k7.c linux-2.6.7-rc1-mm1/arch/i386/kernel/cpu/cpufreq/powernow-k7.c
--- linux-2.6.7-rc1-mm1.vanilla/arch/i386/kernel/cpu/cpufreq/powernow-k7.c Wed Apr 28 22:56:07 2004
+++ linux-2.6.7-rc1-mm1/arch/i386/kernel/cpu/cpufreq/powernow-k7.c Thu Apr 29 00:10:40 2004
@@ -22,6 +22,7 @@
#include <linux/cpufreq.h>
#include <linux/slab.h>
#include <linux/string.h>
+#include <linux/dmi.h>
#include <asm/msr.h>
#include <asm/timex.h>
@@ -554,6 +555,31 @@ static unsigned int powernow_get(unsigne
}
+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)
{
union msr_fidvidstatus fidvidstatus;
@@ -572,7 +598,7 @@ static int __init powernow_cpu_init (str
}
dprintk(KERN_INFO PFX "FSB: %3d.%03d MHz\n", fsb/1000, fsb%1000);
- if ((dmi_broken & BROKEN_CPUFREQ) || powernow_acpi_force) {
+ if (dmi_check_system(powernow_dmi_table) || powernow_acpi_force) {
printk (KERN_INFO PFX "PSB/PST known to be broken. Trying ACPI instead\n");
result = powernow_acpi_init();
} else {
diff -urpN -X /usr/share/dontdiff linux-2.6.7-rc1-mm1.vanilla/arch/i386/kernel/dmi_scan.c linux-2.6.7-rc1-mm1/arch/i386/kernel/dmi_scan.c
--- linux-2.6.7-rc1-mm1.vanilla/arch/i386/kernel/dmi_scan.c Thu Apr 29 00:10:34 2004
+++ linux-2.6.7-rc1-mm1/arch/i386/kernel/dmi_scan.c Thu Apr 29 00:10:40 2004
@@ -235,16 +235,6 @@ static __init int reset_videomode_after_
#endif
-static __init int 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");
- dmi_broken |= BROKEN_CPUFREQ;
- return 0;
-}
-
-
#ifdef CONFIG_ACPI_PCI
static __init int disable_acpi_irq(struct dmi_system_id *d)
{
@@ -310,16 +300,6 @@ static __initdata struct dmi_system_id d
DMI_MATCH(DMI_PRODUCT_NAME, "S4030CDT/4.3"),
} },
#endif
-
- /*
- * 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", {
- DMI_MATCH(DMI_SYS_VENDOR, "Insyde Software"),
- DMI_MATCH(DMI_BIOS_VERSION, "3A71"),
- } },
#ifdef CONFIG_SERIO_I8042
{ set_8042_nomux, "Compaq Proliant 8500", {
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 11/13] 2.6.7-rc1-mm1, Port local APIC quirks to new DMI probing
2004-05-28 11:55 ` [PATCH 10/13] 2.6.7-rc1-mm1, Port powernow-k7 driver " Andrey Panin
@ 2004-05-28 11:56 ` Andrey Panin
2004-05-28 11:56 ` [PATCH 12/13] 2.6.7-rc1-mm1, Port ACPI sleep quirk " Andrey Panin
0 siblings, 1 reply; 5+ messages in thread
From: Andrey Panin @ 2004-05-28 11:56 UTC (permalink / raw)
To: Andrew Morton, linux-kernel
diff -urpN -X /usr/share/dontdiff linux-2.6.7-rc1-mm1.vanilla/arch/i386/kernel/apic.c linux-2.6.7-rc1-mm1/arch/i386/kernel/apic.c
--- linux-2.6.7-rc1-mm1.vanilla/arch/i386/kernel/apic.c Wed Apr 28 22:56:08 2004
+++ linux-2.6.7-rc1-mm1/arch/i386/kernel/apic.c Thu Apr 29 00:13:49 2004
@@ -26,6 +26,7 @@
#include <linux/mc146818rtc.h>
#include <linux/kernel_stat.h>
#include <linux/sysdev.h>
+#include <linux/dmi.h>
#include <asm/atomic.h>
#include <asm/smp.h>
@@ -624,11 +625,66 @@ static int __init lapic_enable(char *str
}
__setup("lapic", lapic_enable);
+/*
+ * Some machines, usually laptops, can't handle an enabled local APIC.
+ * The symptoms include hangs or reboots when suspending or resuming,
+ * attaching or detaching the power cord, or entering BIOS setup screens
+ * through magic key sequences.
+ */
+static int __init local_apic_kills_bios(struct dmi_system_id *d)
+{
+ if (enable_local_apic == 0) {
+ enable_local_apic = -1;
+ printk(KERN_WARNING "%s with broken BIOS detected. "
+ "Refusing to enable the local APIC.\n",
+ d->ident);
+ }
+ return 0;
+}
+
+static struct dmi_system_id __initdata apic_dmi_table[] = {
+ {
+ .callback = local_apic_kills_bios,
+ .ident = "Dell Inspiron",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron"),
+ },
+ },
+ {
+ .callback = local_apic_kills_bios,
+ .ident = "Dell Latitude",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude"),
+ },
+ },
+ {
+ .callback = local_apic_kills_bios,
+ .ident = "IBM Thinkpad T20",
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
+ DMI_MATCH(DMI_BOARD_NAME, "264741U"),
+ },
+ },
+ {
+ .callback = local_apic_kills_bios,
+ .ident = "ASUS L3C",
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
+ DMI_MATCH(DMI_BOARD_NAME, "P4_L3C"),
+ },
+ },
+ { }
+};
+
static int __init detect_init_APIC (void)
{
u32 h, l, features;
extern void get_cpu_vendor(struct cpuinfo_x86*);
+ dmi_check_system(apic_dmi_table);
+
/* Disabled by DMI scan or kernel option? */
if (enable_local_apic < 0)
return -1;
@@ -1159,6 +1215,8 @@ asmlinkage void smp_error_interrupt(void
*/
int __init APIC_init_uniprocessor (void)
{
+ dmi_check_system(apic_dmi_table);
+
if (enable_local_apic < 0)
clear_bit(X86_FEATURE_APIC, boot_cpu_data.x86_capability);
diff -urpN -X /usr/share/dontdiff linux-2.6.7-rc1-mm1.vanilla/arch/i386/kernel/dmi_scan.c linux-2.6.7-rc1-mm1/arch/i386/kernel/dmi_scan.c
--- linux-2.6.7-rc1-mm1.vanilla/arch/i386/kernel/dmi_scan.c Thu Apr 29 00:13:36 2004
+++ linux-2.6.7-rc1-mm1/arch/i386/kernel/dmi_scan.c Thu Apr 29 00:14:26 2004
@@ -156,26 +156,6 @@ static void __init dmi_save_ident(struct
}
/*
- * Some machines, usually laptops, can't handle an enabled local APIC.
- * The symptoms include hangs or reboots when suspending or resuming,
- * attaching or detaching the power cord, or entering BIOS setup screens
- * through magic key sequences.
- */
-static int __init local_apic_kills_bios(struct dmi_system_id *d)
-{
-#ifdef CONFIG_X86_LOCAL_APIC
- extern int enable_local_apic;
- if (enable_local_apic == 0) {
- enable_local_apic = -1;
- printk(KERN_WARNING "%s with broken BIOS detected. "
- "Refusing to enable the local APIC.\n",
- d->ident);
- }
-#endif
- return 0;
-}
-
-/*
* HP Proliant 8500 systems can't use i8042 in mux mode,
* or they instantly reboot.
*/
@@ -261,28 +241,6 @@ static __init int disable_acpi_pci(struc
*/
static __initdata struct dmi_system_id dmi_blacklist[]={
-
- /* Machines which have problems handling enabled local APICs */
-
- { local_apic_kills_bios, "Dell Inspiron", {
- DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
- DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron"),
- } },
-
- { local_apic_kills_bios, "Dell Latitude", {
- DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
- DMI_MATCH(DMI_PRODUCT_NAME, "Latitude"),
- } },
-
- { local_apic_kills_bios, "IBM Thinkpad T20", {
- DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
- DMI_MATCH(DMI_BOARD_NAME, "264741U"),
- } },
-
- { local_apic_kills_bios, "ASUS L3C", {
- DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
- DMI_MATCH(DMI_BOARD_NAME, "P4_L3C"),
- } },
{ broken_acpi_Sx, "ASUS K7V-RM", { /* Bad ACPI Sx table */
DMI_MATCH(DMI_BIOS_VERSION,"ASUS K7V-RM ACPI BIOS Revision 1003A"),
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 12/13] 2.6.7-rc1-mm1, Port ACPI sleep quirk to new DMI probing
2004-05-28 11:56 ` [PATCH 11/13] 2.6.7-rc1-mm1, Port local APIC quirks " Andrey Panin
@ 2004-05-28 11:56 ` Andrey Panin
2004-05-28 11:56 ` [PATCH 13/13] 2.6.7-rc1-mm1, Port i8042 " Andrey Panin
0 siblings, 1 reply; 5+ messages in thread
From: Andrey Panin @ 2004-05-28 11:56 UTC (permalink / raw)
To: Andrew Morton, linux-kernel
diff -urpN -X /usr/share/dontdiff linux-2.6.7-rc1-mm1.vanilla/arch/i386/kernel/dmi_scan.c linux-2.6.7-rc1-mm1/arch/i386/kernel/dmi_scan.c
--- linux-2.6.7-rc1-mm1.vanilla/arch/i386/kernel/dmi_scan.c Thu Apr 29 00:15:56 2004
+++ linux-2.6.7-rc1-mm1/arch/i386/kernel/dmi_scan.c Thu Apr 29 00:16:13 2004
@@ -193,17 +193,6 @@ static __init int broken_toshiba_keyboar
return 0;
}
-/*
- * Toshiba fails to preserve interrupts over S1
- */
-
-static __init int init_ints_after_s1(struct dmi_system_id *d)
-{
- printk(KERN_WARNING "Toshiba with broken S1 detected.\n");
- dmi_broken |= BROKEN_INIT_AFTER_S1;
- return 0;
-}
-
#ifdef CONFIG_ACPI_SLEEP
static __init int reset_videomode_after_s3(struct dmi_system_id *d)
{
@@ -248,9 +237,6 @@ static __initdata struct dmi_system_id d
} },
{ broken_toshiba_keyboard, "Toshiba Satellite 4030cdt", { /* Keyboard generates spurious repeats */
- DMI_MATCH(DMI_PRODUCT_NAME, "S4030CDT/4.3"),
- } },
- { init_ints_after_s1, "Toshiba Satellite 4030cdt", { /* Reinitialization of 8259 is needed after S1 resume */
DMI_MATCH(DMI_PRODUCT_NAME, "S4030CDT/4.3"),
} },
#ifdef CONFIG_ACPI_SLEEP
diff -urpN -X /usr/share/dontdiff linux-2.6.7-rc1-mm1.vanilla/drivers/acpi/sleep/main.c linux-2.6.7-rc1-mm1/drivers/acpi/sleep/main.c
--- linux-2.6.7-rc1-mm1.vanilla/drivers/acpi/sleep/main.c Wed Apr 28 22:55:43 2004
+++ linux-2.6.7-rc1-mm1/drivers/acpi/sleep/main.c Thu Apr 29 00:16:13 2004
@@ -10,6 +10,7 @@
#include <linux/delay.h>
#include <linux/irq.h>
+#include <linux/dmi.h>
#include <linux/device.h>
#include <linux/suspend.h>
#include <acpi/acpi_bus.h>
@@ -30,6 +31,8 @@ static u32 acpi_suspend_states[] = {
[PM_SUSPEND_DISK] = ACPI_STATE_S4,
};
+static int init_8259A_after_S1;
+
/**
* acpi_pm_prepare - Do preliminary suspend work.
* @state: suspend state we're entering.
@@ -138,7 +141,7 @@ static int acpi_pm_finish(u32 state)
/* reset firmware waking vector */
acpi_set_firmware_waking_vector((acpi_physical_address) 0);
- if (dmi_broken & BROKEN_INIT_AFTER_S1) {
+ if (init_8259A_after_S1) {
printk("Broken toshiba laptop -> kicking interrupts\n");
init_8259A(0);
}
@@ -159,16 +162,38 @@ int acpi_suspend(u32 acpi_state)
return -EINVAL;
}
-
static struct pm_ops acpi_pm_ops = {
.prepare = acpi_pm_prepare,
.enter = acpi_pm_enter,
.finish = acpi_pm_finish,
};
+
+/*
+ * Toshiba fails to preserve interrupts over S1, reinitialization
+ * of 8259 is needed after S1 resume.
+ */
+static int __init init_ints_after_s1(struct dmi_system_id *d)
+{
+ printk(KERN_WARNING "%s with broken S1 detected.\n", d->ident);
+ init_8259A_after_S1 = 1;
+ return 0;
+}
+
+static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
+ {
+ .callback = init_ints_after_s1,
+ .ident = "Toshiba Satellite 4030cdt",
+ .matches = { DMI_MATCH(DMI_PRODUCT_NAME, "S4030CDT/4.3"), },
+ },
+ { },
+};
+
static int __init acpi_sleep_init(void)
{
int i = 0;
+
+ dmi_check_system(acpisleep_dmi_table);
if (acpi_disabled)
return 0;
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 13/13] 2.6.7-rc1-mm1, Port i8042 quirk to new DMI probing
2004-05-28 11:56 ` [PATCH 12/13] 2.6.7-rc1-mm1, Port ACPI sleep quirk " Andrey Panin
@ 2004-05-28 11:56 ` Andrey Panin
0 siblings, 0 replies; 5+ messages in thread
From: Andrey Panin @ 2004-05-28 11:56 UTC (permalink / raw)
To: Andrew Morton, linux-kernel
diff -urpN -X /usr/share/dontdiff linux-2.6.7-rc1-mm1.vanilla/arch/i386/kernel/dmi_scan.c linux-2.6.7-rc1-mm1/arch/i386/kernel/dmi_scan.c
--- linux-2.6.7-rc1-mm1.vanilla/arch/i386/kernel/dmi_scan.c Thu Apr 29 00:18:14 2004
+++ linux-2.6.7-rc1-mm1/arch/i386/kernel/dmi_scan.c Thu Apr 29 00:26:56 2004
@@ -155,22 +155,6 @@ static void __init dmi_save_ident(struct
printk(KERN_ERR "dmi_save_ident: out of memory.\n");
}
-/*
- * HP Proliant 8500 systems can't use i8042 in mux mode,
- * or they instantly reboot.
- */
-#ifdef CONFIG_SERIO_I8042
-extern unsigned int i8042_nomux;
-static __init int set_8042_nomux(struct dmi_system_id *d)
-{
- if (i8042_nomux == 0)
- {
- i8042_nomux = 1;
- printk(KERN_INFO "Disabling i8042 mux mode\n");
- }
- return 0;
-}
-#endif
/*
* ASUS K7V-RM has broken ACPI table defining sleep modes
@@ -243,14 +227,6 @@ static __initdata struct dmi_system_id d
{ reset_videomode_after_s3, "Toshiba Satellite 4030cdt", { /* Reset video mode after returning from ACPI S3 sleep */
DMI_MATCH(DMI_PRODUCT_NAME, "S4030CDT/4.3"),
} },
-#endif
-
-#ifdef CONFIG_SERIO_I8042
- { set_8042_nomux, "Compaq Proliant 8500", {
- DMI_MATCH(DMI_SYS_VENDOR, "Compaq"),
- DMI_MATCH(DMI_PRODUCT_NAME , "ProLiant"),
- DMI_MATCH(DMI_PRODUCT_VERSION, "8500"),
- }},
#endif
#ifdef CONFIG_ACPI_PCI
diff -urpN -X /usr/share/dontdiff linux-2.6.7-rc1-mm1.vanilla/drivers/input/serio/i8042.c linux-2.6.7-rc1-mm1/drivers/input/serio/i8042.c
--- linux-2.6.7-rc1-mm1.vanilla/drivers/input/serio/i8042.c Wed Apr 28 22:55:59 2004
+++ linux-2.6.7-rc1-mm1/drivers/input/serio/i8042.c Thu Apr 29 00:29:19 2004
@@ -21,6 +21,7 @@
#include <linux/sysdev.h>
#include <linux/pm.h>
#include <linux/serio.h>
+#include <linux/dmi.h>
#include <asm/io.h>
@@ -32,7 +33,7 @@ static unsigned int i8042_noaux;
module_param_named(noaux, i8042_noaux, bool, 0);
MODULE_PARM_DESC(noaux, "Do not probe or use AUX (mouse) port.");
-unsigned int i8042_nomux;
+static unsigned int i8042_nomux;
module_param_named(nomux, i8042_nomux, bool, 0);
MODULE_PARM_DESC(nomux, "Do not check whether an active multiplexing conrtoller is present.");
@@ -943,11 +944,39 @@ static void __init i8042_init_mux_values
values->mux = index;
}
+/*
+ * HP Proliant 8500 systems can't use i8042 in mux mode,
+ * or they instantly reboot.
+ */
+static int __init set_8042_nomux(struct dmi_system_id *d)
+{
+ if (!i8042_nomux) {
+ i8042_nomux = 1;
+ printk(KERN_INFO "Disabling i8042 mux mode\n");
+ }
+ return 0;
+}
+
+static struct dmi_system_id __initdata i8042_dmi_table[] = {
+ {
+ .callback = set_8042_nomux,
+ .ident = "Compaq Proliant 8500",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Compaq"),
+ DMI_MATCH(DMI_PRODUCT_NAME , "ProLiant"),
+ DMI_MATCH(DMI_PRODUCT_VERSION, "8500"),
+ },
+ },
+ { },
+};
+
int __init i8042_init(void)
{
int i;
dbg_init();
+
+ dmi_check_system(i8042_dmi_table);
init_timer(&i8042_timer);
i8042_timer.function = i8042_timer_func;
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2004-05-28 12:15 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1085745352794@donpac.ru>
2004-05-28 11:55 ` [PATCH 9/13] 2.6.7-rc1-mm1, Port reboot related quirks to new DMI probing Andrey Panin
2004-05-28 11:55 ` [PATCH 10/13] 2.6.7-rc1-mm1, Port powernow-k7 driver " Andrey Panin
2004-05-28 11:56 ` [PATCH 11/13] 2.6.7-rc1-mm1, Port local APIC quirks " Andrey Panin
2004-05-28 11:56 ` [PATCH 12/13] 2.6.7-rc1-mm1, Port ACPI sleep quirk " Andrey Panin
2004-05-28 11:56 ` [PATCH 13/13] 2.6.7-rc1-mm1, Port i8042 " Andrey Panin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox