|
@@ -63,6 +63,10 @@ static bool i8042_noloop;
|
|
module_param_named(noloop, i8042_noloop, bool, 0);
|
|
module_param_named(noloop, i8042_noloop, bool, 0);
|
|
MODULE_PARM_DESC(noloop, "Disable the AUX Loopback command while probing for the AUX port");
|
|
MODULE_PARM_DESC(noloop, "Disable the AUX Loopback command while probing for the AUX port");
|
|
|
|
|
|
|
|
+static bool i8042_notimeout;
|
|
|
|
+module_param_named(notimeout, i8042_notimeout, bool, 0);
|
|
|
|
+MODULE_PARM_DESC(notimeout, "Ignore timeouts signalled by i8042");
|
|
|
|
+
|
|
#ifdef CONFIG_X86
|
|
#ifdef CONFIG_X86
|
|
static bool i8042_dritek;
|
|
static bool i8042_dritek;
|
|
module_param_named(dritek, i8042_dritek, bool, 0);
|
|
module_param_named(dritek, i8042_dritek, bool, 0);
|
|
@@ -504,7 +508,7 @@ static irqreturn_t i8042_interrupt(int irq, void *dev_id)
|
|
} else {
|
|
} else {
|
|
|
|
|
|
dfl = ((str & I8042_STR_PARITY) ? SERIO_PARITY : 0) |
|
|
dfl = ((str & I8042_STR_PARITY) ? SERIO_PARITY : 0) |
|
|
- ((str & I8042_STR_TIMEOUT) ? SERIO_TIMEOUT : 0);
|
|
|
|
|
|
+ ((str & I8042_STR_TIMEOUT && !i8042_notimeout) ? SERIO_TIMEOUT : 0);
|
|
|
|
|
|
port_no = (str & I8042_STR_AUXDATA) ?
|
|
port_no = (str & I8042_STR_AUXDATA) ?
|
|
I8042_AUX_PORT_NO : I8042_KBD_PORT_NO;
|
|
I8042_AUX_PORT_NO : I8042_KBD_PORT_NO;
|