浏览代码

Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/dtor/input

* 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/dtor/input:
  Input: i8042 - another attempt to fix AUX delivery checks
Linus Torvalds 18 年之前
父节点
当前提交
0ce3c83a9c
共有 1 个文件被更改,包括 8 次插入2 次删除
  1. 8 2
      drivers/input/serio/i8042.c

+ 8 - 2
drivers/input/serio/i8042.c

@@ -553,7 +553,8 @@ static int __devinit i8042_check_aux(void)
  */
  */
 
 
 	param = 0x5a;
 	param = 0x5a;
-	if (i8042_command(&param, I8042_CMD_AUX_LOOP) || param != 0x5a) {
+	retval = i8042_command(&param, I8042_CMD_AUX_LOOP);
+	if (retval || param != 0x5a) {
 
 
 /*
 /*
  * External connection test - filters out AT-soldered PS/2 i8042's
  * External connection test - filters out AT-soldered PS/2 i8042's
@@ -567,7 +568,12 @@ static int __devinit i8042_check_aux(void)
 		    (param && param != 0xfa && param != 0xff))
 		    (param && param != 0xfa && param != 0xff))
 			return -1;
 			return -1;
 
 
-		aux_loop_broken = 1;
+/*
+ * If AUX_LOOP completed without error but returned unexpected data
+ * mark it as broken
+ */
+		if (!retval)
+			aux_loop_broken = 1;
 	}
 	}
 
 
 /*
 /*