summaryrefslogtreecommitdiffstats
path: root/drivers/input/serio/i8042-x86ia64io.h
diff options
context:
space:
mode:
authorCarlos Corbacho <carlos@strangeworlds.co.uk>2008-01-21 01:04:40 -0500
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2008-01-21 01:11:08 -0500
commit8987fec0de0a4b71dd345052ea4271eaf05f7956 (patch)
treeca26d4d0a7cb2aec66b20c9cfb1d53d1fadb9406 /drivers/input/serio/i8042-x86ia64io.h
parent93e9012f40f75b8ab8a37deaf532b3c5e9b527c6 (diff)
Input: i8042 - add Dritek keyboard extension quirk
Some Wistron based laptops need us to explicitly enable the 'Dritek keyboard extension' to make their extra keys start generating scancodes. Originally, this was just confined to older laptops, but a few Acer laptops have turned up in 2007 that also need this again. Signed-off-by: Carlos Corbacho <carlos@strangeworlds.co.uk> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'drivers/input/serio/i8042-x86ia64io.h')
-rw-r--r--drivers/input/serio/i8042-x86ia64io.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
index c5e68dcd88a..4f6384d8e09 100644
--- a/drivers/input/serio/i8042-x86ia64io.h
+++ b/drivers/input/serio/i8042-x86ia64io.h
@@ -277,6 +277,50 @@ static struct dmi_system_id __initdata i8042_dmi_nomux_table[] = {
#endif
+#ifdef CONFIG_X86
+
+#include <linux/dmi.h>
+
+/*
+ * Some Wistron based laptops need us to explicitly enable the 'Dritek
+ * keyboard extension' to make their extra keys start generating scancodes.
+ * Originally, this was just confined to older laptops, but a few Acer laptops
+ * have turned up in 2007 that also need this again.
+ */
+static struct dmi_system_id __initdata i8042_dmi_dritek_table[] = {
+ {
+ .ident = "Acer Aspire 5630",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5630"),
+ },
+ },
+ {
+ .ident = "Acer Aspire 5650",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5650"),
+ },
+ },
+ {
+ .ident = "Acer Aspire 5680",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5680"),
+ },
+ },
+ {
+ .ident = "Acer TravelMate 2490",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 2490"),
+ },
+ },
+ { }
+};
+
+#endif /* CONFIG_X86 */
+
#ifdef CONFIG_PNP
#include <linux/pnp.h>
@@ -520,6 +564,11 @@ static int __init i8042_platform_init(void)
i8042_nomux = 1;
#endif
+#ifdef CONFIG_X86
+ if (dmi_check_system(i8042_dmi_dritek_table))
+ i8042_dritek = 1;
+#endif /* CONFIG_X86 */
+
return retval;
}