Messages in this thread | | | Subject | 2.6.3-bk7 i8042 does not work on a genuine i386 ibm ps/2 model 70. | From | (Eric W. Biederman) | Date | 29 Feb 2004 07:32:19 -0700 |
| |
The i8042 driver attempts to detect if IBM PC compatiblity mode i.e. I8042_CTR_XLATE is enabled. Unfortunately on a genuine IBM PS/2, (a pc incompatible :) this does not work.
In i8042_controller_init if I disable the detection of the keyboard not being in XLATE mode everything works fine.
/* * If the chip is configured into nontranslated mode by the BIOS, don't * bother enabling translating and be happy. */ #if 0
if (~i8042_ctr & I8042_CTR_XLATE) i8042_direct = 1; #endif
The value of i8042_initial_ctr is 0x25 in case that helps.
I am not certain where to proceed from here.
The piece I am certain about is that the keyboard controller has traditionally been a tiny microcontroller on PCs so that there is a wide variance in the commands and the exact format that they support. And so far every data sheet I have looked at the documentation is slightly different. The only real intel datasheet I could find was for the i8741A. And it does not document the traditional interface implemented but the i8042, because that was done in firmware.
This machine is primarily a test machine to make certain my code works on older hardware. So I am willing try any interesting or likely patches.
My primary problem is that the code does not do the conservative thing and assume the BIOS setup the machine in PC compatible mode, and only when certain XLATE mode is implemented by the i8042 act on that information. Instead the code is assumes it knows how the hardware works when in fact it does not.
One solution might be check to assume XLATE mode is always enabled unless the underlying hardware matches a known list of superio chips.
It is extremely evil to try and use a machine when the scancodes are misinterpreted.
Eric - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |