summaryrefslogtreecommitdiff
path: root/drivers/input
diff options
context:
space:
mode:
authorVojtech Pavlik <vojtech@suse.cz>2002-10-09 12:54:14 +0200
committerVojtech Pavlik <vojtech@suse.cz>2002-10-09 12:54:14 +0200
commitd3ca7378ff7372a0c06184d715ff702027f3e168 (patch)
tree7a35d2f3f11a0eca7a4109bbc89cf38569490e08 /drivers/input
parent8e12e1f9fdc413418e3bac8776f40a341ff77b4a (diff)
parent29365575af50d39d3d6ae7ccf9c495e31c0660d1 (diff)
Merge Linus's i8042 PgUp fix (conflicted with mine).
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/keyboard/atkbd.c2
-rw-r--r--drivers/input/serio/i8042.c20
-rw-r--r--drivers/input/serio/i8042.h2
3 files changed, 13 insertions, 11 deletions
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index 537f97ad3ab4..bc8e89124152 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -44,7 +44,7 @@ static unsigned char atkbd_set2_keycode[512] = {
0, 49, 48, 35, 34, 21, 7, 0, 0, 0, 50, 36, 22, 8, 9, 0,
0, 51, 37, 23, 24, 11, 10, 0, 0, 52, 53, 38, 39, 25, 12, 0,
122, 89, 40,120, 26, 13, 0, 0, 58, 54, 28, 27, 0, 43, 0, 0,
- 85, 86, 90, 91, 92, 93, 14, 94, 95, 79, 43, 75, 71,121, 0,123,
+ 85, 86, 90, 91, 92, 93, 14, 94, 95, 79,183, 75, 71,121, 0,123,
82, 83, 80, 76, 77, 72, 1, 69, 87, 78, 81, 74, 55, 73, 70, 99,
252, 0, 0, 65, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index 53ed2a2e3c38..c810a637b972 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -161,7 +161,7 @@ static int i8042_command(unsigned char *param, int command)
param[i] = ~i8042_read_data();
else
param[i] = i8042_read_data();
- dbg("%02x <- i8042 (return)\n", param[i]);
+ dbg("%02x <- i8042 (return)", param[i]);
}
spin_unlock_irqrestore(&i8042_lock, flags);
@@ -655,24 +655,26 @@ static int __init i8042_check_aux(struct i8042_values *values)
i8042_flush();
/*
- * Internal loopback test - filters out AT-type i8042's
+ * Internal loopback test - filters out AT-type i8042's. Unfortunately
+ * SiS screwed up and their 5597 doesn't support the LOOP command even
+ * though it has an AUX port.
*/
param = 0x5a;
- if (i8042_command(&param, I8042_CMD_AUX_LOOP) || param != 0xa5)
- return -1;
+ if (i8042_command(&param, I8042_CMD_AUX_LOOP) || param != 0xa5) {
/*
* External connection test - filters out AT-soldered PS/2 i8042's
* 0x00 - no error, 0x01-0x03 - clock/data stuck, 0xff - general error
* 0xfa - no error on some notebooks which ignore the spec
- * We ignore general error, since some chips report it even under normal
- * operation.
+ * Because it's common for chipsets to return error on perfectly functioning
+ * AUX ports, we test for this only when the LOOP command failed.
*/
- if (i8042_command(&param, I8042_CMD_AUX_TEST)
- || (param && param != 0xfa && param != 0xff))
- return -1;
+ if (i8042_command(&param, I8042_CMD_AUX_TEST)
+ || (param && param != 0xfa && param != 0xff))
+ return -1;
+ }
/*
* Bit assignment test - filters out PS/2 i8042's in AT mode
diff --git a/drivers/input/serio/i8042.h b/drivers/input/serio/i8042.h
index 8b970d1f87d1..f694a2d75acb 100644
--- a/drivers/input/serio/i8042.h
+++ b/drivers/input/serio/i8042.h
@@ -104,7 +104,7 @@
#ifdef DEBUG
static unsigned long i8042_start;
#define dbg_init() do { i8042_start = jiffies; } while (0);
-#define dbg(format, arg...) printk(KERN_DEBUG __FILE__ ": " format "[%d]\n" ,\
+#define dbg(format, arg...) printk(KERN_DEBUG __FILE__ ": " format " [%d]\n" ,\
## arg, (int) (jiffies - i8042_start))
#else
#define dbg_init() do { } while (0);