From: "H. Nikolaus Schaller" <hns@goldelico.com> To: Marcel Holtmann <marcel@holtmann.org> Cc: Pavel Machek <pavel@ucw.cz>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Rob Herring <robh@kernel.org>, Jiri Slaby <jslaby@suse.com>, Sebastian Reichel <sre@kernel.org>, Peter Hurley <peter@hurleysoftware.com>, NeilBrown <neil@brown.name>, Arnd Bergmann <arnd@arndb.de>, Linus Walleij <linus.walleij@linaro.org>, linux-bluetooth@vger.kernel.org, linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, herkne@gmx.de Subject: Re: [RFC PATCH 0/3] UART slave device bus Date: Thu, 18 Aug 2016 14:16:27 +0200 [thread overview] Message-ID: <3EC597BE-9348-4D44-B291-A0DB294851BE@goldelico.com> (raw) In-Reply-To: <951C95FD-35DD-4EC5-A62C-31378B85EF14@holtmann.org> > Am 18.08.2016 um 13:49 schrieb Marcel Holtmann <marcel@holtmann.org>: > > Hi Nikolaus, > >>>>> I am actually not convinced that GPS should be represented as >>>>> /dev/ttyS0 or similar TTY. It think they deserve their own driver >>>>> exposing them as simple character devices. That way we can have a >>>>> proper DEVTYPE and userspace can find them correctly. We can also >>>>> annotate them if needed for special settings. >>>> >>>> I would _love_ to see that happen, but what about the GPS line >>>> discipline that we have today? How would that match up with a char >>>> device driver? >>> >>> ./drivers/usb/serial/garmin_gps.c ? >>> >>> Hmm, some cleanups would be welcome there... plus it would be good to >>> know what is its interface to userland... it is not easily apparent >>> from the code. >>> >>> Actually, having some kind of common support for GPSes in the kernel >>> would be nice. (Chardev that spits NMEA data? >> >> Yes and no. How do you apply tcsetattr to such a device? More or less >> by implementing another tty stack? >> >>> ) For example N900 GPS is >>> connected over network (phonet) interface, with userland driver >>> translating custom protocol into NMEA. Not very nice from "kernel >>> should provide hardware abstraction" point of view. >> >> Indeed. In such a case the translation should be done in the kernel. >> But it is not necessary for devices that already provide NEMA over UART. >> Still user-space should be able to tcsetattr how it wants to see the records >> (mainly CR/LF translations). > > I disagree here. NMEA is a standard and the kernel should just enforce framing of NMEA sentences. AFAIR, NMEA was originally sort of a serial bus going through a ship. Where masters (a gps receiver) can send records with position and speed data and clients (e.g. an auto-pilot) can receive them and process their actions and send control commands to a motor / winding engine. But I would have to do more research about this. > It makes no difference what the CR/LF is. Userspace gets full sentences. NMEA defines that devices connected to the NMEA source receive characters and not sentences. For example an NMEA record defines a checksum. Should that also be exposed to user space or hidden? How should checksum errors be reported or handled by the kernel? I would agree if we want to write an abstract "position in geospace" driver/subsystem which reports the position on surface and height and speed and direction. Then we can hide everything in the kernel. But this would no longer send sentences to user space but cooked coordinates. More like iio data. And next issue: how should we handle GPS devices with a bidirectional interface where sending some special command sequence over the UART switches to SIRF or some other proprietary mode? Then, the driver (ans Linux) can't squeeze that into NMEA sentences any more. By doing this in the kernel we make it more inflexible. Puh, when digging into this topic it becomes more and more complex and we are making it more complex than it is currently working. BR, Nikolaus
WARNING: multiple messages have this Message-ID (diff)
From: "H. Nikolaus Schaller" <hns@goldelico.com> To: Marcel Holtmann <marcel@holtmann.org> Cc: Pavel Machek <pavel@ucw.cz>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Rob Herring <robh@kernel.org>, Jiri Slaby <jslaby@suse.com>, Sebastian Reichel <sre@kernel.org>, Peter Hurley <peter@hurleysoftware.com>, NeilBrown <neil@brown.name>, Arnd Bergmann <arnd@arndb.de>, Linus Walleij <linus.walleij@linaro.org>, linux-bluetooth@vger.kernel.org, linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, herkne@gmx.de Subject: Re: [RFC PATCH 0/3] UART slave device bus Date: Thu, 18 Aug 2016 14:16:27 +0200 [thread overview] Message-ID: <3EC597BE-9348-4D44-B291-A0DB294851BE@goldelico.com> (raw) In-Reply-To: <951C95FD-35DD-4EC5-A62C-31378B85EF14@holtmann.org> > Am 18.08.2016 um 13:49 schrieb Marcel Holtmann <marcel@holtmann.org>: >=20 > Hi Nikolaus, >=20 >>>>> I am actually not convinced that GPS should be represented as >>>>> /dev/ttyS0 or similar TTY. It think they deserve their own driver >>>>> exposing them as simple character devices. That way we can have a >>>>> proper DEVTYPE and userspace can find them correctly. We can also >>>>> annotate them if needed for special settings. >>>>=20 >>>> I would _love_ to see that happen, but what about the GPS line >>>> discipline that we have today? How would that match up with a char >>>> device driver? >>>=20 >>> ./drivers/usb/serial/garmin_gps.c ? >>>=20 >>> Hmm, some cleanups would be welcome there... plus it would be good = to >>> know what is its interface to userland... it is not easily apparent >>> from the code. >>>=20 >>> Actually, having some kind of common support for GPSes in the kernel >>> would be nice. (Chardev that spits NMEA data? >>=20 >> Yes and no. How do you apply tcsetattr to such a device? More or less >> by implementing another tty stack? >>=20 >>> ) For example N900 GPS is >>> connected over network (phonet) interface, with userland driver >>> translating custom protocol into NMEA. Not very nice from "kernel >>> should provide hardware abstraction" point of view. >>=20 >> Indeed. In such a case the translation should be done in the kernel. >> But it is not necessary for devices that already provide NEMA over = UART. >> Still user-space should be able to tcsetattr how it wants to see the = records >> (mainly CR/LF translations). >=20 > I disagree here. NMEA is a standard and the kernel should just enforce = framing of NMEA sentences. AFAIR, NMEA was originally sort of a serial bus going through a ship. = Where masters (a gps receiver) can send records with position and speed data and clients (e.g. an = auto-pilot) can receive them and process their actions and send control commands to a motor / winding = engine. But I would have to do more research about this. > It makes no difference what the CR/LF is. Userspace gets full = sentences. NMEA defines that devices connected to the NMEA source receive = characters and not sentences. For example an NMEA record defines a checksum. Should that also be = exposed to user space or hidden? How should checksum errors be reported or handled by the kernel? I would agree if we want to write an abstract "position in geospace" = driver/subsystem which reports the position on surface and height and speed and direction. Then we can = hide everything in the kernel. But this would no longer send sentences to user space but cooked = coordinates. More like iio data. And next issue: how should we handle GPS devices with a bidirectional = interface where sending some special command sequence over the UART switches to SIRF or some = other proprietary mode? Then, the driver (ans Linux) can't squeeze that into NMEA = sentences any more. By doing this in the kernel we make it more inflexible. Puh, when digging into this topic it becomes more and more complex and = we are making it more complex than it is currently working. BR, Nikolaus
next prev parent reply other threads:[~2016-08-18 12:19 UTC|newest] Thread overview: 139+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-08-18 1:14 [RFC PATCH 0/3] UART slave device bus Rob Herring 2016-08-18 1:14 ` [RFC PATCH 1/3] uart bus: Introduce new bus for UART slave devices Rob Herring 2016-08-18 1:14 ` [RFC PATCH 2/3] tty: serial_core: make tty_struct optional Rob Herring 2016-08-18 10:50 ` Pavel Machek 2016-08-18 1:14 ` [RFC PATCH 3/3] tty: serial_core: add uart controller registration Rob Herring 2016-08-18 10:22 ` [RFC PATCH 0/3] UART slave device bus Greg Kroah-Hartman 2016-08-18 10:22 ` Greg Kroah-Hartman 2016-08-18 10:30 ` Marcel Holtmann 2016-08-18 10:53 ` Greg Kroah-Hartman 2016-08-18 13:53 ` Rob Herring 2016-08-18 13:15 ` Rob Herring 2016-08-18 15:04 ` One Thousand Gnomes 2016-08-18 18:33 ` Rob Herring 2016-08-19 11:03 ` One Thousand Gnomes 2016-08-25 16:40 ` Rob Herring 2016-08-25 16:40 ` Rob Herring 2016-08-26 13:12 ` One Thousand Gnomes 2016-08-18 10:39 ` H. Nikolaus Schaller 2016-08-18 10:39 ` H. Nikolaus Schaller 2016-08-18 10:47 ` Pavel Machek 2016-08-18 10:54 ` H. Nikolaus Schaller 2016-08-18 10:54 ` H. Nikolaus Schaller 2016-08-18 10:57 ` Greg Kroah-Hartman 2016-08-18 11:14 ` H. Nikolaus Schaller 2016-08-18 11:14 ` H. Nikolaus Schaller 2016-08-18 11:14 ` H. Nikolaus Schaller 2016-08-18 14:40 ` One Thousand Gnomes 2016-08-18 14:40 ` One Thousand Gnomes 2016-08-18 14:58 ` Greg Kroah-Hartman 2016-08-18 11:27 ` H. Nikolaus Schaller 2016-08-18 10:49 ` Marcel Holtmann 2016-08-18 10:55 ` Greg Kroah-Hartman 2016-08-18 11:01 ` Marcel Holtmann 2016-08-18 11:24 ` Greg Kroah-Hartman 2016-08-18 11:42 ` Pavel Machek 2016-08-18 11:42 ` Pavel Machek 2016-08-18 11:51 ` Marcel Holtmann 2016-08-18 11:51 ` Marcel Holtmann 2016-08-18 15:14 ` One Thousand Gnomes 2016-08-18 15:13 ` One Thousand Gnomes 2016-08-18 11:10 ` Pavel Machek 2016-08-18 11:18 ` H. Nikolaus Schaller 2016-08-18 11:49 ` Marcel Holtmann 2016-08-18 12:16 ` H. Nikolaus Schaller [this message] 2016-08-18 12:16 ` H. Nikolaus Schaller 2016-08-18 15:15 ` One Thousand Gnomes 2016-08-18 11:47 ` Marcel Holtmann 2016-08-18 13:01 ` Pavel Machek 2016-08-18 15:16 ` One Thousand Gnomes 2016-08-18 11:02 ` H. Nikolaus Schaller 2016-08-18 11:02 ` H. Nikolaus Schaller 2016-08-18 11:41 ` Marcel Holtmann 2016-08-18 12:07 ` H. Nikolaus Schaller 2016-08-18 12:07 ` H. Nikolaus Schaller 2016-08-18 12:07 ` H. Nikolaus Schaller 2016-08-18 11:02 ` Pavel Machek 2016-08-18 13:07 ` Linus Walleij 2016-08-18 17:31 ` Marcel Holtmann 2016-08-18 14:25 ` One Thousand Gnomes 2016-08-18 15:14 ` H. Nikolaus Schaller 2016-08-18 15:14 ` H. Nikolaus Schaller 2016-08-18 15:38 ` One Thousand Gnomes 2016-08-18 18:31 ` H. Nikolaus Schaller 2016-08-18 18:31 ` H. Nikolaus Schaller 2016-08-18 22:25 ` Rob Herring 2016-08-19 11:38 ` One Thousand Gnomes 2016-08-19 15:36 ` Sebastian Reichel 2016-08-18 20:29 ` Sebastian Reichel 2016-08-18 23:08 ` Rob Herring 2016-08-19 5:21 ` Sebastian Reichel 2016-08-19 7:29 ` H. Nikolaus Schaller 2016-08-19 7:49 ` Oleksij Rempel 2016-08-19 7:49 ` Oleksij Rempel 2016-08-19 17:50 ` H. Nikolaus Schaller 2016-08-19 20:19 ` Oleksij Rempel 2016-08-19 20:19 ` Oleksij Rempel 2016-08-20 13:34 ` One Thousand Gnomes 2016-08-21 7:50 ` H. Nikolaus Schaller 2016-08-21 7:50 ` H. Nikolaus Schaller 2016-08-22 20:39 ` Sebastian Reichel 2016-08-22 21:23 ` H. Nikolaus Schaller 2016-08-22 21:43 ` Arnd Bergmann 2016-08-22 22:42 ` Sebastian Reichel 2016-08-22 22:52 ` One Thousand Gnomes 2016-08-22 23:10 ` Sebastian Reichel 2016-08-23 7:28 ` H. Nikolaus Schaller 2016-08-27 12:01 ` Michal Suchanek 2016-08-19 11:06 ` One Thousand Gnomes 2016-08-19 17:42 ` H. Nikolaus Schaller 2016-08-19 17:42 ` H. Nikolaus Schaller 2016-08-20 13:22 ` One Thousand Gnomes 2016-08-20 13:22 ` One Thousand Gnomes 2016-08-21 7:50 ` H. Nikolaus Schaller 2016-08-21 7:50 ` H. Nikolaus Schaller 2016-08-21 7:50 ` H. Nikolaus Schaller 2016-08-21 17:09 ` One Thousand Gnomes 2016-08-21 18:23 ` H. Nikolaus Schaller 2016-08-21 18:23 ` H. Nikolaus Schaller 2016-08-22 9:09 ` One Thousand Gnomes 2016-08-22 9:33 ` Marcel Holtmann 2016-08-22 9:33 ` Marcel Holtmann 2016-08-19 11:03 ` One Thousand Gnomes 2016-08-19 11:03 ` One Thousand Gnomes 2016-08-19 14:44 ` Sebastian Reichel 2016-08-22 12:37 ` Arnd Bergmann 2016-08-22 13:38 ` Rob Herring 2016-08-22 15:24 ` Arnd Bergmann 2016-08-22 15:28 ` Marcel Holtmann 2016-08-22 15:46 ` Arnd Bergmann 2016-08-22 15:45 ` One Thousand Gnomes 2016-08-22 21:07 ` Marcel Holtmann 2016-08-22 21:35 ` One Thousand Gnomes 2016-08-22 22:03 ` Sebastian Reichel 2016-08-22 22:46 ` One Thousand Gnomes 2016-08-22 23:41 ` Sebastian Reichel 2016-08-24 12:14 ` Linus Walleij 2016-08-22 16:44 ` Rob Herring 2016-08-22 17:02 ` One Thousand Gnomes 2016-08-22 17:30 ` Rob Herring 2016-08-22 17:30 ` Rob Herring 2016-08-22 17:38 ` One Thousand Gnomes 2016-08-22 21:16 ` Marcel Holtmann 2016-08-22 21:32 ` One Thousand Gnomes 2016-08-22 22:00 ` Pavel Machek 2016-08-22 22:54 ` One Thousand Gnomes 2016-08-22 23:57 ` Sebastian Reichel 2016-08-23 0:15 ` One Thousand Gnomes 2016-08-23 0:57 ` Sebastian Reichel 2016-08-24 13:57 ` One Thousand Gnomes 2016-08-24 13:57 ` One Thousand Gnomes 2016-08-24 14:29 ` Marcel Holtmann 2016-08-24 14:29 ` Marcel Holtmann 2016-08-23 11:42 ` Marcel Holtmann 2016-08-22 23:02 ` Sebastian Reichel 2016-08-22 20:00 ` Sebastian Reichel 2016-08-22 22:00 ` Rob Herring 2016-08-22 22:00 ` Rob Herring 2016-08-22 22:18 ` Sebastian Reichel 2016-08-23 21:04 ` Rob Herring
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=3EC597BE-9348-4D44-B291-A0DB294851BE@goldelico.com \ --to=hns@goldelico.com \ --cc=arnd@arndb.de \ --cc=gregkh@linuxfoundation.org \ --cc=herkne@gmx.de \ --cc=jslaby@suse.com \ --cc=linus.walleij@linaro.org \ --cc=linux-bluetooth@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-serial@vger.kernel.org \ --cc=marcel@holtmann.org \ --cc=neil@brown.name \ --cc=pavel@ucw.cz \ --cc=peter@hurleysoftware.com \ --cc=robh@kernel.org \ --cc=sre@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.