[RFC] tty (or char) bus?

From: Janusz Krzysztofik
Date: Tue Jul 14 2009 - 11:31:33 EST


Hi,

In my attempt to add support for contols to a voice modem codec sound device driver, I found that in order to talk to the modem, it would be convenient if I can get access to a tty device from inside the kernel in a way similiar to that available form userspace. AFAICS, even if tty lowlevel write() could be used unmodified, a convenient way of reading characters from a tty is missing and should be implemented in a line discipline. Please correct me if I am wrong.

OTOH, I found that some kind of abstraction layer for acccessing devices over a tty could be convenient. Instead of allocating a new line discipline for each specific device, sometimes found on a specific board only, why not just create a new bus type?

Implemented as a line discipline, activated (hot-plugged) from userspace with ldattach, that new bus adapter would give kernel level access to an arbitrary device hanging off a tty. As the bus can be assumed point-to-point, a single generic device could be registered automatically in order to trigger that bus registerd drivers' probes (vendor/model id queries, for example). If not enough, an ioctl and a ldattach replacement could be provided for setting up a device id that would match a driver id (something like inputattach does for N_MOUSE).

Once detected by a voice modem codec driver tty bus probe(), a codec subdevice could then be registered with a sound card.

Please let me know if you like the idea. If not, please push me in a better direction.

Many of the new code could be probably based on currently existing drivers and line discplines. As I'm not familiar enough with the linux kernel code, unlike most of you, so please give me some hints on what specific drivers should I look at to get examples best matching my idea.

Thanks,
Janusz
--
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/