I looked a bit more at the keyboard code and find a bug
and a probable bug.
(i) In case a synaptics touchpad has been detected, the comment says
"disable AUX". But we do not set the disable bit, but instead .and.
with the bit - no doubt getting zero. This must be a bug.
(ii) Directly above this is the suspicious comment "keyboard translation
seems to be always off". But every machine comes always up in
translated scancode 2. Translation is never off. But wait! by
mistake the above .and. cleared the XLATE bit.
So, I think bug (i) explains mystery (ii).
However, note that this is code reading only. I do not have the
hardware, so cannot test.
printk(KERN_INFO "i8042.c: Detected active multiplexing controller, rev %d.%d.\n",
(~param >> 4) & 0xf, ~param & 0xf);
-/*
- * In MUX mode the keyboard translation seems to be always off.
- */
-
- i8042_direct = 1;
-
/*
* Disable all muxed ports by disabling AUX.
*/
- i8042_ctr &= I8042_CTR_AUXDIS;
+ i8042_ctr |= I8042_CTR_AUXDIS;
i8042_ctr &= ~I8042_CTR_AUXINT;
if (i8042_command(&i8042_ctr, I8042_CMD_CTL_WCTR))