Commit d3ca7378 authored by Vojtech Pavlik's avatar Vojtech Pavlik

Merge Linus's i8042 PgUp fix (conflicted with mine).

parents 8e12e1f9 29365575
...@@ -44,7 +44,7 @@ static unsigned char atkbd_set2_keycode[512] = { ...@@ -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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
......
...@@ -161,7 +161,7 @@ static int i8042_command(unsigned char *param, int command) ...@@ -161,7 +161,7 @@ static int i8042_command(unsigned char *param, int command)
param[i] = ~i8042_read_data(); param[i] = ~i8042_read_data();
else else
param[i] = i8042_read_data(); param[i] = i8042_read_data();
dbg("%02x <- i8042 (return)\n", param[i]); dbg("%02x <- i8042 (return)", param[i]);
} }
spin_unlock_irqrestore(&i8042_lock, flags); spin_unlock_irqrestore(&i8042_lock, flags);
...@@ -655,24 +655,26 @@ static int __init i8042_check_aux(struct i8042_values *values) ...@@ -655,24 +655,26 @@ static int __init i8042_check_aux(struct i8042_values *values)
i8042_flush(); 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; param = 0x5a;
if (i8042_command(&param, I8042_CMD_AUX_LOOP) || param != 0xa5) if (i8042_command(&param, I8042_CMD_AUX_LOOP) || param != 0xa5) {
return -1;
/* /*
* External connection test - filters out AT-soldered PS/2 i8042's * External connection test - filters out AT-soldered PS/2 i8042's
* 0x00 - no error, 0x01-0x03 - clock/data stuck, 0xff - general error * 0x00 - no error, 0x01-0x03 - clock/data stuck, 0xff - general error
* 0xfa - no error on some notebooks which ignore the spec * 0xfa - no error on some notebooks which ignore the spec
* We ignore general error, since some chips report it even under normal * Because it's common for chipsets to return error on perfectly functioning
* operation. * AUX ports, we test for this only when the LOOP command failed.
*/ */
if (i8042_command(&param, I8042_CMD_AUX_TEST) if (i8042_command(&param, I8042_CMD_AUX_TEST)
|| (param && param != 0xfa && param != 0xff)) || (param && param != 0xfa && param != 0xff))
return -1; return -1;
}
/* /*
* Bit assignment test - filters out PS/2 i8042's in AT mode * Bit assignment test - filters out PS/2 i8042's in AT mode
......
...@@ -104,7 +104,7 @@ ...@@ -104,7 +104,7 @@
#ifdef DEBUG #ifdef DEBUG
static unsigned long i8042_start; static unsigned long i8042_start;
#define dbg_init() do { i8042_start = jiffies; } while (0); #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)) ## arg, (int) (jiffies - i8042_start))
#else #else
#define dbg_init() do { } while (0); #define dbg_init() do { } while (0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment