[PATCH 43/47] Move Compaq ProLiant DMI handling to i8042.c.

Vojtech Pavlik
2004-07-29T14:17:08Z

ChangeSet@1.1757.50.2, 2004-06-29 11:59:04+02:00, vojtech@suse.cz
input: Move Compaq ProLiant DMI handling (ServerWorks/OSB workaround)
to i8042.c.

Signed-off-by: Vojtech Pavlik <vojtech@suse.cz>

i8042-io.h | 31 +++++++++++++++++++++++++++++++
i8042.c | 12 ++----------
2 files changed, 33 insertions(+), 10 deletions(-)

===================================================================

diff -Nru a/drivers/input/serio/i8042-io.h b/drivers/input/serio/i8042-io.h
--- a/drivers/input/serio/i8042-io.h Thu Jul 29 14:38:43 2004
+++ b/drivers/input/serio/i8042-io.h Thu Jul 29 14:38:43 2004
@@ -63,6 +63,31 @@
return;
}

+#if defined(__i386__)
+
+#include <linux/dmi.h>
+
+static struct dmi_system_id __initdata i8042_dmi_table[] = {
+ {
+ .ident = "Compaq Proliant 8500",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Compaq"),
+ DMI_MATCH(DMI_PRODUCT_NAME , "ProLiant"),
+ DMI_MATCH(DMI_PRODUCT_VERSION, "8500"),
+ },
+ },
+ {
+ .ident = "Compaq Proliant DL760",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Compaq"),
+ DMI_MATCH(DMI_PRODUCT_NAME , "ProLiant"),
+ DMI_MATCH(DMI_PRODUCT_VERSION, "DL760"),
+ },
+ },
+ { }
+};
+#endif
+
static inline int i8042_platform_init(void)
{
/*
@@ -77,6 +102,12 @@
#if !defined(__i386__) && !defined(__x86_64__)
i8042_reset = 1;
#endif
+
+#if defined(__i386__)
+ if (dmi_check_system(i8042_dmi_table))
+ i8042_noloop = 1;
+#endif
+
return 0;
}

diff -Nru a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
--- a/drivers/input/serio/i8042.c Thu Jul 29 14:38:43 2004
+++ b/drivers/input/serio/i8042.c Thu Jul 29 14:38:43 2004
@@ -52,10 +52,9 @@
module_param_named(dumbkbd, i8042_dumbkbd, bool, 0);
MODULE_PARM_DESC(dumbkbd, "Pretend that controller can only read data from keyboard");

-#ifdef __i386__
-extern unsigned int i8042_dmi_noloop;
-#endif
static unsigned int i8042_noloop;
+module_param_named(noloop, i8042_noloop, bool, 0);
+MODULE_PARM_DESC(dumbkbd, "Disable the AUX Loopback command while probing for the AUX port");

__obsolete_setup("i8042_noaux");
__obsolete_setup("i8042_nomux");
@@ -966,13 +965,6 @@

if (i8042_dumbkbd)
i8042_kbd_port.write = NULL;
-
-#ifdef __i386__
- if (i8042_dmi_noloop) {
- printk(KERN_INFO "i8042.c: AUX LoopBack command disabled by DMI.\n");
- i8042_noloop = 1;
- }
-#endif

if (!i8042_noaux && !i8042_check_aux(&i8042_aux_values)) {
if (!i8042_nomux && !i8042_check_mux(&i8042_aux_values))