Re: GPS driver for Linux - kernel or user-space driver?

From: Greg KH
Date: Wed Apr 03 2013 - 21:19:21 EST


On Wed, Apr 03, 2013 at 06:12:42PM -0700, Marcel Holtmann wrote:
> Hi Greg,
>
> >> I've been approached by a developer at Sony who wants to publish an
> >> open source driver for a Sony GPS receiver module.
> >
> > What does the device look like? USB device? UART? Something else?
> >
> >> I've looked in the kernel source, and only see one standalone GPS
> >> driver, for Garmin. It appears that most GPS support in Linux is done
> >> via user-space drivers. Many GPS hardware modules appear to be
> >> accessed via a serial line, or USB/serial port. The Sony
> >> module is pretty much the same, accepting commands and delivering
> >> data via a uart from the chip.
> >>
> >> I planning to recommend writing a user-space driver (based on
> >> gpsd and/or the Android GPS HAL specification). But I'm worried
> >> I'm missing something. Is this the correct approach, or is there
> >> an established kernel API for GPS modules - such that I should
> >> recommend that this developer writes a kernel module instead
> >> of, or in addition to, the user-space support for the hardware?
> >
> > If it's just a uart-like device, just write a serial driver and drive it
> > from gpsd. That way seems to be the simplest and then the kernel just
> > becomes a dumb-pipe, which is fine.
>
> the one thing that still bugs me is that detecting an UART with GPS
> functionality behind it is extremely bad experience. If we could get
> something like DEVTYPE=gps support for the TTY layer, that would be
> helpful.

I would love that, but there's tons of USB gps devices that we don't
know if they are a USB serial device, or a GPS device as the device id
is the same (companies just embed a usb to serial chip in their
devices.)

So, someone has to guess, right now it's userspace.

Unless you have a better idea?

thanks,

greg k-h
--
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/