Input: i8042 - fix AUX IRQ delivery check
authorDmitry Torokhov <dtor@insightbb.com>
Sat, 10 Feb 2007 06:29:53 +0000 (01:29 -0500)
committerDmitry Torokhov <dtor@insightbb.com>
Sat, 10 Feb 2007 06:29:53 +0000 (01:29 -0500)
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>
drivers/input/serio/i8042.c

index 1364c7964db47283221d6ea7b539af7b91126c52..c3fdfc1f342a2fdd38b35e1294adc77ca0d44d9e 100644 (file)
@@ -543,6 +543,7 @@ static int __devinit i8042_check_aux(void)
 {
        int retval = -1;
        int irq_registered = 0;
+       int aux_loop_broken = 0;
        unsigned long flags;
        unsigned char param;
 
@@ -572,6 +573,8 @@ static int __devinit i8042_check_aux(void)
                if (i8042_command(&param, I8042_CMD_AUX_TEST) ||
                    (param && param != 0xfa && param != 0xff))
                        return -1;
+
+               aux_loop_broken = 1;
        }
 
 /*
@@ -595,7 +598,7 @@ static int __devinit i8042_check_aux(void)
  * used it for a PCI card or somethig else.
  */
 
-       if (i8042_noloop) {
+       if (i8042_noloop || aux_loop_broken) {
 /*
  * Without LOOP command we can't test AUX IRQ delivery. Assume the port
  * is working and hope we are right.