[RFC PATCH 0/3] bluetooth/gnss: GNSS support for TiWi chips

From: Andreas Kemnade
Date: Sun Nov 26 2023 - 14:19:09 EST


Some of these chips have GNSS support. In some vendor kernels
a driver on top of misc/ti-st can be found providing a /dev/tigps
device which speaks the secretive Air Independent Interface (AI2) protocol.
Implement something comparable as a GNSS interface.

With some userspace tools a proof-of-concept can be shown. A position
can be successfully read out. Basic properties of the protocol are
understood.

This was tested on the Epson Moverio BT-200.

This is sent out as an early RFC to ensure I am going onto the right
track:

So the main questions I see:
- is the approach right to abandon drivers/misc/ti-st?

- Output at /dev/gnssX:
AI2 vs. NMEA
The chip can be configured into sending AI2-encapsulated NMEA,
or proving data in a binary format.
Some research has to be done yet for the details.
A pile of logs is waiting for further analysis...

Arguments for/against NMEA:
+ Userspace is prepared to handle it
+ Power management can be easily done by the kernel
- Less functionality can be used.

Arguments for/against AI2:
+ Full functionality can be accessed from userspace (incl. A-GPS,
maybe raw satellite data)
- Userspace has to behave to have proper power management
- No freely (not even as in beer) tool available to fully use AI2,
so there will be only a real advantage after long "French Cafe"
sessions.

More detailed tings:
- Some live cycle management is left out. Since it depends
on the decisions above, I have not put much thought into it.
- Should some pieces go into drivers/gnss?
- detection for GNSS availability: For now the node name is
used. But the device should be there if the chip supports it
and things are wired up properly.

Andreas Kemnade (3):
gnss: Add AI2 protocol used by some TI combo chips.
bluetooth: ti-st: add GNSS support for TI Wilink chips
drivers: misc: ti-st: begin to deorbit

drivers/bluetooth/hci_ll.c | 154 ++++++++++++++++++++++++++++++++++++-
drivers/gnss/core.c | 1 +
drivers/misc/ti-st/Kconfig | 2 +-
include/linux/gnss.h | 1 +
4 files changed, 156 insertions(+), 2 deletions(-)

--
2.39.2