Hi Heiko, On Thu, Apr 16, 2009 at 08:22:34AM +0200, Heiko Schocher wrote: > Hello, > > I maybe get a projekt, where I have 2 PS/2 ports (a keyboard and a mousse) > connected to one UART and the multiplexing is done by a PIC. > > I searched in actual 2.6 Kernel sources for such a solution, but > couln;t find one. Overlooked I something? > > For 2.4er Kernel there was such a driver, see > > http://git.denx.de/?p=linuxppc_2_4_devel.git;a=blob;f=drivers/char/ps2mult.c > > but, I think, this is no longer portable to 2.6. > > So, thats why I am here and want to ask the experts how to solve > this problem in a mainline acceptable way, before I make a hack, > that never has a chance to go in mainline. > > Some suggestions from me (maybe they are all bad) > > I looked in drivers/input/serio/serio.c and could think of adding > the multiplexing in serio_interrupt(), and call serio_driver specific > serio->drv->interrupt functions, when I know, which byte come from > which device. But, if I see it right, I can only add one "struct > serio_driver *drv;" driver to one serio port, so it is not possible > to handle 2 or more devices over one serio port :-( > Maybe we enhance this too ... ? > > Or I make a combinated (keyboard/mousse) driver which uses one > serio port ... but I think thats a bad idea, also no idea, in which > directory i have to add such a driver. > > So I think it would nice to have the possibility to add more than > one serio_driver to a serio_port and add a "multiplexer" layer ... > but I am new to the input layer, so I ask the experts. > > Hopefully I just missed something in actual code, and there is > better/easier way? ;-) > You need to create 2 serio ports in your driver and have it send data into appropriate port, depending on what device it came from. If you take a look at i8042 driver it does exactly that. We have 1 serio port for keyboard and eithe 1 or 4 AUX serio ports. In i8042_interrupt we check the status bit to figure to which serio port incoming byte should be routed and act accordingly. Hope this helps. -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html