Thread (11 messages) 11 messages, 2 authors, 2010-03-25

Re: [RFC][PATCH 4/5] input: serio: add support for Amstrad Delta serial keyboard port

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2010-03-24 16:16:04
Also in: linux-omap

On Mon, Mar 22, 2010 at 10:07:47PM +0100, Janusz Krzysztofik wrote:
(dropping Tony and e3-hacking for now)

Monday 14 December 2009 01:11:34 Janusz Krzysztofik wrote:
quoted
Hi Dmitry,

Sunday 13 December 2009 00:20:03 Dmitry Torokhov napisał(a):
quoted
atkbd is supposed to support PS/2 devices speaking AT keyboard protocol.
We also do support such devices behind dumb controllers that do not
allow querying the device but we expect those to at least produce the
standard scancodes.
As far as I can understand, using the atkbd driver is not a good idea in
this case because of the keyboard not producing standard scancodes,
correct?

Isn't the hpps2atkbd.h provided keycode table an already supported way of
introducing exceptions to this standard scancodes requirement? Why couldn't
this method be reused here?

What I am afraid of is if the driver supposed to be created instead
wouldn't require reiplementing most of the atkbd code.
quoted
I would need to know a bit more about the gamepad, but so far I still
think that current attempot of creating intermediate serio module which
allows to use atkbd driver is not the proper solution.
I modified the serio driver to send exactly what it gets from the buffer
and examined its output with serio_raw. The gamepad (can be connected
simultaneously) appeared to send exactly the same scancodes as the keyboard
did. I couldn't see how those might be destinguished whether coming from
the keybord or from the gamepad. Thus, handling them both together as a
single device would probably be the only option here.

With both devices connected and keys pressed simultaneously, errors occure
at the lowest level: parity check failed, invalid stop bit, etc. I don't
think it would be possible to do anything about this. But this also means
that trying to query them in order to get a sensible response would
probably be not reliable.

Any thoughts?

Thanks,
Janusz
Hi Dmitry,
Hi Janusz,
You probably missed my last message.

Meanwhile, I've connected the Amstrad Delta keyboard to a PC. I can confirm it 
speaks PS/2 protocol and is automatically detected by atkbd/i8042 drivers. 
The initial handshake sequence actually looks exactly the same as that of a 
standard AT keyboard.
OK, since the device really speaks PS/2 protocol I withdraw my objection
of using serio + atkbd combo, however we should not be doing translation
in serio.
The problem persists about different scancodes, giving 
wrong keystrokes.
This can be dealt with from userspace by loading correct keymap.
OTOH, the Amstrad Delta gamepad seems simplified. Connected alone to a PC, 
works as well but only when i8042.dumbkbd is set. However, when both devices 
are connected in parallel, initial keyboard handshake allows for both being 
used (not simultaneously) in default 2-way i8042 mode.

Resuming, if there were a boot/module option to atkbd allowing for non-default 
scancode table, or another similiar possibility, both devices would work with 
a PC using exsisting drivers.
You can train UDEV to load proper keymap. What does teh device report as
'version' in sysfs (output of 'cat
/sys/bus/serio/devices/serio0/input/input3/id/bustype', please adjust
serioX and inputX to match yours)?

Thanks.

-- 
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help