2.6.3-bk7 i8042 does not work on a genuine i386 ibm ps/2 model 70.

From: Eric W. Biederman
Date: Sun Feb 29 2004 - 09:43:30 EST



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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/