[E3-hacking] [RFC][PATCH 4/5] input: serio: add support forAmstrad Delta serial keyboard port

witek mark witek_temp at wp.pl
Thu Dec 17 15:36:48 GMT 2009


Witam,


Od jakiegoś czasu obserwuję grupę dyskusyjną Amstrada. Sam posiadam 
jeden egzemplarz i coś tam sobie na nim próbuję uruchomić.
Chciałem się podzielić kilkoma spostrzeżeniami dotyczącymi klawiatury.
Na razie nie odpisuję na grupę tylko do Pana.

Zaintrygowany mailem dotyczącym klawiatury postanowiłem ją rozkręcić aby 
zobaczyć co w środku jest. Okazuje się, że płytka klawiatury jest 
"przyspawana" do jednej ze stron obudowy. Trzeba by wyłamać parę 
zatrzasków, żeby obejrzeć te stronę płytki drukowanej, gdzie są 
rozmieszczone elementy - dlatego na razie dałem sobie z tym spokój. Idąc 
dalej rozkręciłem tego gamepada. Jak się ponadto okazuje ten gamepad 
wpina się między amstrada a klawiaturę. Klawiatura i gamepad mają 
interfejs złożony z czterech pinów i po sprawdzeniu miernikiem okazuję 
się, że klawiatura i gamepad jeśli się je połączy razem do amstrada to 
są one podłączone równolegle do tych pinów (jestem tego pewien na 90%).
Ponadto po rozkręceniu gamepada ukazała mi się płytka drukowana ale 
niestety nie wiem co to jest za chip elektroniczny w środku, gdyż ma on 
postać "czarnego okrągłego kleksa plastikowego" (szkoda, że nie zrobiłem 
zdjęcia). Jedno jest pewne: na tej płytce te cztery piny interfejsu były 
opisane jako GND, VCC, CLK i DATA. Czyli wnioskując musi to być jakiś 
interfejs szeregowy. Ponadto wiemy już, że klawiatura i gamepad są 
podłączane równolegle do amstrada, czyli musi to być interfejs 
szeregowy, który niejako "wspiera" połączenie kilku urządzeń do jednej 
magistrali.
Może to jest zwykły interfejs szeregowy typu rs232?
Załóżmy na chwilkę, że jest to interfejs rs232. Możemy wtedy stwierdzić, 
że:
a) klawiatura generuje jakiś zestaw kodów klawiszy,
b) gamepad generuje ten sam zestaw kodów klawiszy - może i tak być, 
wtedy gamepad zachowuje się jako "specjalna klawiatura na potrzeby gier" 
i tak naprawdę można powiedzieć że na amstradzie gra się na klawiaturze 
a gamepad tylko ułatwia "wciskanie guzików",
c) pisze Pan, że jeśli gamepad i klawiatura są podłączone jednocześnie i 
jednocześnie cos na nich naciskamy to obserwuje Pan w sterowniku błędy 
typu: parity check failed, invalid stop bit. O ile moja znajomość 
protokołów transmisji jest dobra, to wychodzi na to, że te błędy 
występują właśnie w transmisji szeregowej rs232 (chyba, że jest jakiś 
inny podobny protokół transmisji). O ile naciska Pan przycisk tylko na 
jednym urządzeniu to wszystko jest w porządku; urządzenie wysyła np kod 
klawisza, a interfejs szeregowy dodaje jeszcze bity parzystości 
(kontrola błędów) i stopu. Jeśli teraz zaczniemy coś naciskać na drugim 
urządzeniu to ono również wysyła swój kod błędu, bity parzystości i bity 
stopu. Wtedy może dochodzić np do kolizji (klawiatura wysyła w danym 
momencie bit stopu a gamepad wysyła swój kod klawisza) i port szeregowy 
w amstradzie "głupieje" i zgłasza błędy typu parity check failed, 
invalid stop bit). Generalnie w porcie szeregowym typu rs232 można 
podłączyć kilka urządzeń równolegle, tylko jak przynajmniej dwa zaczną 
nadawać w tej samej chwili to zaczynają się kolizje.

W sterownikach linuxa nie jestem za mocny dlatego nie mam pojęcia jak 
jest napisany dotychczasowy driver. Gdybym miał oscyloskop to bym 
sprawdził komunikację na tych pinach i by się okazało czy to jest 
rzeczywiście transmisja typu rs232.


Co Pan myśli o moich tezach? A mogę dostać Pańskie logi ze sterownika? 
Może coś uda się wymyślić.


pozdrawiam


Witold Markowski









Dnia 14-12-2009 o godz. 1:11 Janusz Krzysztofik napisał(a):
> Hi Dmitry,
> 
> Sunday 13 December 2009 00:20:03 Dmitry Torokhov napisał(a):
> >
> > 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.
> 
> > 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
> 
> _______________________________________________
> e3-hacking mailing list
> e3-hacking at earth.li
> http://www.earth.li/cgi-bin/mailman/listinfo/e3-hacking

----------------------------------------------------
Kołodziej będzie miażdżył na ringu
18 grudnia, Gala Boksu w Łodzi
Zobacz:
http://klik.wp.pl/?adr=http%3A%2F%2Fcorto.www.wp.pl%2Fas%2Fwojak18grudnia.html&sid=926





More information about the e3-hacking mailing list