1. 07 Jul, 2018 1 commit
  2. 06 Jul, 2018 3 commits
  3. 03 Jul, 2018 28 commits
  4. 28 Jun, 2018 8 commits
    • Johan Hovold's avatar
      gnss: add receiver type support · 10f14663
      Johan Hovold authored
      Add a "type" device attribute and a "GNSS_TYPE" uevent variable which
      can be used to determine the type of a GNSS receiver. The currently
      identified types reflect the protocol(s) supported by a receiver:
      
      	"NMEA"	NMEA 0183
      	"SiRF"	SiRF Binary
      	"UBX"	UBX
      
      Note that both SiRF and UBX type receivers typically support a subset of
      NMEA 0183 with vendor extensions (e.g. to allow switching to the vendor
      protocol).
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      10f14663
    • Johan Hovold's avatar
      gnss: add driver for sirfstar-based receivers · d2efbbd1
      Johan Hovold authored
      Add driver for serial-connected SiRFstar-based GNSS receivers.
      
      These devices typically boot into hibernate mode from which they can be
      woken using a pulse on the ON_OFF input pin. Once active, a pulse on the
      same ON_OFF pin is used to put the device back into hibernate mode. The
      current state can be determined by sampling the WAKEUP output.
      
      Hardware configurations where WAKEUP has been connected to ON_OFF (and
      where an initial WAKEUP pulse during boot is sufficient to have the
      device boot into active mode) are also supported. In this case, device
      power is managed using the main-supply regulator only.
      
      Note that configurations where WAKEUP is left not connected, so that the
      device power state can only indirectly be determined using the I/O
      interface, is currently not supported. It should be fairly
      straight-forward to extend the current implementation with such support
      however (and this this is the main reason for not using the generic
      serial implementation for this driver).
      
      Note that timepulse-support is left unimplemented.
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d2efbbd1
    • Johan Hovold's avatar
      dt-bindings: gnss: add sirfstar binding · 176193b7
      Johan Hovold authored
      Add binding for SiRFstar-based GNSS receivers.
      
      Note that while four compatible-strings are initially added representing
      devices which differ in which I/O interfaces they support, they
      otherwise essentially share the same feature set.
      
      Pin and supply names vary slightly, as do some recommended timings.
      
      Note that the wakeup gpio is not intended to be used as a wakeup source,
      but rather to detect the current power state of the device (active or
      hibernate).
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      176193b7
    • Johan Hovold's avatar
      gnss: add driver for u-blox receivers · 1ad69f10
      Johan Hovold authored
      Add driver for serial-connected u-blox GNSS receivers.
      
      Note that the driver uses the generic GNSS serial implementation and
      therefore essentially only manages power abstracted into three power
      states: ACTIVE, STANDBY, and OFF.
      
      For u-blox receivers with a main supply and no enable-gpios, this simply
      means that the main supply is disabled in STANDBY and OFF (the optional
      backup supply is kept enabled while the driver is bound).
      
      Note that timepulse-support is not yet implemented.
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1ad69f10
    • Johan Hovold's avatar
      dt-bindings: gnss: add u-blox binding · cf408372
      Johan Hovold authored
      Add binding for u-blox GNSS receivers.
      
      Note that the u-blox product names encodes form factor (e.g. "neo"),
      chipset (e.g. "8") and variant (e.g. "q"), but that only formfactor and
      chipset is used for the compatible strings (for now).
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      cf408372
    • Johan Hovold's avatar
      gnss: add generic serial driver · 37768b05
      Johan Hovold authored
      Add a generic serial GNSS driver (library) which provides a common
      implementation for the gnss interface and power management (runtime and
      system suspend). This allows GNSS drivers for specific chip to be
      implemented by simply providing a set_power() callback to handle three
      states: ACTIVE, STANDBY and OFF.
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      37768b05
    • Johan Hovold's avatar
      dt-bindings: add generic gnss binding · 98ddec80
      Johan Hovold authored
      Describe generic properties for GNSS receivers.
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      98ddec80
    • 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