Messages in this thread |  | | | Date | Wed, 06 Jun 2007 10:27:04 +0200 | | From | "Lars K.W. Gohlke" <> | | Subject | Re: How to access correctly serial port inside module? |
| |
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Tilman Schmidt schrieb: > Am 03.06.2007 22:28 schrieb Lars K.W. Gohlke: >> Tilman Schmidt schrieb: >>> Am 17.05.2007 08:15 schrieb huang ying: >>>> I think the "serio" (through drivers/input/serio/serport.c) may be a >>>> choice too, like that in linux/drivers/input/mouse/sermouse.c, which >>>> is an example to program serial port in kernel space. >>> Interesting. I wonder if that would have been a better choice for >>> the Gigaset M101 driver. It seems even to have a probe mechanism >>> so one could try to determine if the expected device is really >>> connected to the port. >>> Is there any documentation on this interface? I find the source a >>> bit hard to understand, sparsely commented as it is. >> how can I open ttyS1 with major=4 and minor=65? > > a) With "my" approach, ie. writing a line discipline, you open > /dev/ttyS1 in a user space program and then push your line discipline > onto it using ioctl(,TIOCSETD,). > > b) With the "serio" approach, if the probe mechanism is really what > I think it is, you register your probe function and wait for it to > be called for each active serial port, then do your thing to determine > whether this is a/the port you want to use. > >> Does anybody have some code to read from it the first e.g. 2bytes? > > That's not how things work in the kernel. You don't "read the first > <n> bytes" at will. You have to provide means to process whatever > data happens to arrive on the serial port, as it arrives. > > a) With a line discipline, you provide a callback function > ".receive_buf" which will be called by the serial driver if some > data has been received, and has to process that data then and there. > You might just stow it away in a buffer of course, provided you > are sure to get around to processing it later. > > b) With the "serio" interface, it seems the ".interrupt" function > serves the same purpose - though, as I said, I am not really > competent on that topic. > > HTH > T. > ok because I want to handle it in kernel space I will no take option a)
I will try it the way of b)
anyway thx. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.3 (MingW32) - GPGrelay v0.959 iD8DBQFGZm/aAAomYJ1taN8RAhS1AKC5xZVKXjZPAovXLmz2vuVr7JXssQCgqxs9 PUcqGC5sTzPtEzxuc5nkdes= =qO4W -----END PGP SIGNATURE-----begin:vcard fn:Lars K.W. Gohlke n:Gohlke;Lars K.W. email;internet:lkwg82@gmx.de x-mozilla-html:FALSE version:2.1 end:vcard
|  |