aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Torokhov <dtor@insightbb.com>2007-02-10 01:29:53 -0500
committerDmitry Torokhov <dtor@insightbb.com>2007-02-10 01:29:53 -0500
commit1e4865f8d469b1795e77877410951e5b808a2c4e (patch)
tree33d81b3ed22a435c4d0883eb5cfb62a34e9e8075
parent5809d537c1bc7628cee1e580da35f6b4d254e23b (diff)
Input: i8042 - fix AUX IRQ delivery check
On boxes that do not implement AUX LOOP command we can not verify AUX IRQ delivery and must assume that it is wired properly. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
-rw-r--r--drivers/input/serio/i8042.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index 1364c7964db4..c3fdfc1f342a 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -543,6 +543,7 @@ static int __devinit i8042_check_aux(void)
543{ 543{
544 int retval = -1; 544 int retval = -1;
545 int irq_registered = 0; 545 int irq_registered = 0;
546 int aux_loop_broken = 0;
546 unsigned long flags; 547 unsigned long flags;
547 unsigned char param; 548 unsigned char param;
548 549
@@ -572,6 +573,8 @@ static int __devinit i8042_check_aux(void)
572 if (i8042_command(&param, I8042_CMD_AUX_TEST) || 573 if (i8042_command(&param, I8042_CMD_AUX_TEST) ||
573 (param && param != 0xfa && param != 0xff)) 574 (param && param != 0xfa && param != 0xff))
574 return -1; 575 return -1;
576
577 aux_loop_broken = 1;
575 } 578 }
576 579
577/* 580/*
@@ -595,7 +598,7 @@ static int __devinit i8042_check_aux(void)
595 * used it for a PCI card or somethig else. 598 * used it for a PCI card or somethig else.
596 */ 599 */
597 600
598 if (i8042_noloop) { 601 if (i8042_noloop || aux_loop_broken) {
599/* 602/*
600 * Without LOOP command we can't test AUX IRQ delivery. Assume the port 603 * Without LOOP command we can't test AUX IRQ delivery. Assume the port
601 * is working and hope we are right. 604 * is working and hope we are right.