summaryrefslogtreecommitdiff
path: root/drivers/input/serio/i8042.c
diff options
context:
space:
mode:
authorCarlos Corbacho <carlos@strangeworlds.co.uk>2008-01-21 06:04:40 (GMT)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2008-01-21 06:11:08 (GMT)
commit8987fec0de0a4b71dd345052ea4271eaf05f7956 (patch)
treeca26d4d0a7cb2aec66b20c9cfb1d53d1fadb9406 /drivers/input/serio/i8042.c
parent93e9012f40f75b8ab8a37deaf532b3c5e9b527c6 (diff)
downloadlinux-8987fec0de0a4b71dd345052ea4271eaf05f7956.tar.xz
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.c')
-rw-r--r--drivers/input/serio/i8042.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index cbe83bf..1f73cf7 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -63,6 +63,12 @@ static unsigned int i8042_blink_frequency = 500;
module_param_named(panicblink, i8042_blink_frequency, uint, 0600);
MODULE_PARM_DESC(panicblink, "Frequency with which keyboard LEDs should blink when kernel panics");
+#ifdef CONFIG_X86
+static unsigned int i8042_dritek;
+module_param_named(dritek, i8042_dritek, bool, 0);
+MODULE_PARM_DESC(dritek, "Force enable the Dritek keyboard extension");
+#endif
+
#ifdef CONFIG_PNP
static int i8042_nopnp;
module_param_named(nopnp, i8042_nopnp, bool, 0);
@@ -1145,6 +1151,7 @@ static int __devinit i8042_setup_kbd(void)
static int __devinit i8042_probe(struct platform_device *dev)
{
int error;
+ char param;
error = i8042_controller_selftest();
if (error)
@@ -1166,6 +1173,13 @@ static int __devinit i8042_probe(struct platform_device *dev)
goto out_fail;
}
+ if (i8042_dritek) {
+ param = 0x90;
+ error = i8042_command(&param, 0x1059);
+ if (error)
+ goto out_fail;
+ }
+
/*
* Ok, everything is ready, let's register all serio ports
*/