From a8399c512b5fa2cf80831f5b4cd3adffd299fbe3 Mon Sep 17 00:00:00 2001 From: Dmitry Torokhov Date: Sun, 4 Nov 2007 00:44:31 -0400 Subject: Input: i8042 - use synchronize_irq() instead of synchronize_sched() RT guys advised me that in their kernels synchronize_sched() will not work to ensure that all IRQ handlers run to their completion and that synchronize_irq() should be used instead. Signed-off-by: Dmitry Torokhov --- drivers/input/serio/i8042.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'drivers/input/serio/i8042.c') diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c index 1a0cea3c5294..13da06fd0b8f 100644 --- a/drivers/input/serio/i8042.c +++ b/drivers/input/serio/i8042.c @@ -280,7 +280,14 @@ static void i8042_stop(struct serio *serio) struct i8042_port *port = serio->port_data; port->exists = 0; - synchronize_sched(); + + /* + * We synchronize with both AUX and KBD IRQs because there is + * a (very unlikely) chance that AUX IRQ is raised for KBD port + * and vice versa. + */ + synchronize_irq(I8042_AUX_IRQ); + synchronize_irq(I8042_KBD_IRQ); port->serio = NULL; } -- cgit From 3b04a61107dfe46dbfc1796298b59ca3c0a09cd9 Mon Sep 17 00:00:00 2001 From: Julia Lawall Date: Tue, 27 Nov 2007 00:45:50 -0500 Subject: Input: drop redundant includes of moduleparam.h Drop #include in files that also include linux/module.h, since module.h includes moduleparam.h already. Signed-off-by: Julia Lawall Signed-off-by: Dmitry Torokhov --- drivers/input/serio/i8042.c | 1 - 1 file changed, 1 deletion(-) (limited to 'drivers/input/serio/i8042.c') diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c index 13da06fd0b8f..cbe83bf294c9 100644 --- a/drivers/input/serio/i8042.c +++ b/drivers/input/serio/i8042.c @@ -12,7 +12,6 @@ #include #include -#include #include #include #include -- cgit From 8987fec0de0a4b71dd345052ea4271eaf05f7956 Mon Sep 17 00:00:00 2001 From: Carlos Corbacho Date: Mon, 21 Jan 2008 01:04:40 -0500 Subject: 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 Signed-off-by: Dmitry Torokhov --- drivers/input/serio/i8042.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'drivers/input/serio/i8042.c') diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c index cbe83bf294c9..1f73cf72a7c5 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(¶m, 0x1059); + if (error) + goto out_fail; + } + /* * Ok, everything is ready, let's register all serio ports */ -- cgit From c18bab80d16f04db3e263cc97522d21693cad2ce Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Wed, 6 Feb 2008 00:48:15 -0500 Subject: Input: i8042 - non-x86 build fix Signed-off-by: Andrew Morton Signed-off-by: Dmitry Torokhov --- drivers/input/serio/i8042.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'drivers/input/serio/i8042.c') diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c index 1f73cf72a7c5..2763394869d2 100644 --- a/drivers/input/serio/i8042.c +++ b/drivers/input/serio/i8042.c @@ -1172,14 +1172,14 @@ static int __devinit i8042_probe(struct platform_device *dev) if (error) goto out_fail; } - +#ifdef CONFIG_X86 if (i8042_dritek) { param = 0x90; error = i8042_command(¶m, 0x1059); if (error) goto out_fail; } - +#endif /* * Ok, everything is ready, let's register all serio ports */ -- cgit