Skip to content
  • Johan Hovold's avatar
    gnss: add GNSS receiver subsystem · 2b6a4403
    Johan Hovold authored
    
    
    Add a new subsystem for GNSS (e.g. GPS) receivers.
    
    While GNSS receivers are typically accessed using a UART interface they
    often also support other I/O interfaces such as I2C, SPI and USB, while
    yet other devices use iomem or even some form of remote-processor
    messaging (rpmsg).
    
    The new GNSS subsystem abstracts the underlying interface and provides a
    new "gnss" class type, which exposes a character-device interface (e.g.
    /dev/gnss0) to user space. This allows GNSS receivers to have a
    representation in the Linux device model, something which is important
    not least for power management purposes.
    
    Note that the character-device interface provides raw access to whatever
    protocol the receiver is (currently) using, such as NMEA 0183, UBX or
    SiRF Binary. These protocols are expected to be continued to be handled
    by user space for the time being, even if some hybrid solutions are also
    conceivable (e.g. to have kernel drivers issue management commands).
    
    This will still allow for better platform integration by allowing GNSS
    devices and their resources (e.g. regulators and enable-gpios) to be
    described by firmware and managed by kernel drivers rather than
    platform-specific scripts and services.
    
    While the current interface is kept minimal, it could be extended using
    IOCTLs, sysfs or uevents as needs and proper abstraction levels are
    identified and determined (e.g. for device and feature identification).
    
    Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    2b6a4403