This series adds an IIO driver for a UART-attached sensor aggregation
device. The device sends OSF0 binary frames over serdev UART. The driver
uses capability reports to register IIO devices for supported sensors.
v2 preparation changes:
- split the previous RFC driver patch into smaller patches
- add a Device Tree binding
- add an OSF0 protocol reference
- use get_unaligned_le16/32/64() for wire fields
- use IIO timestamp handling for buffered samples
- push decoded samples directly to registered IIO devices
Tested path:
- STM32F405 OSF0 UART stream
- Raspberry Pi 4 serdev
- kernel 6.12.75+rpt-rpi-v8
- IIO devices: osf-accel, osf-gyro, osf-magn, osf-temp
- raw reads from accel, gyro, magn, and temp
- buffer reads from accel, gyro, magn, and temp
No OSF oops, panic, or call trace was observed in the Raspberry Pi
runtime smoke.
Jinseob Kim (7):
dt-bindings: iio: add Open Sensor Fusion UART device
Documentation: iio: add Open Sensor Fusion protocol v0 reference
iio: osf: add protocol v0 decoding
iio: osf: add stream parser
iio: osf: add UART serdev transport
iio: osf: register IIO devices from capabilities
MAINTAINERS: add Open Sensor Fusion IIO driver
.../iio/imu/opensensorfusion,osf-uart.yaml | 33 ++
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
.../iio/open-sensor-fusion-protocol-v0.rst | 267 +++++++++++++++
MAINTAINERS | 9 +
drivers/iio/Kconfig | 1 +
drivers/iio/Makefile | 1 +
drivers/iio/opensensorfusion/Kconfig | 15 +
drivers/iio/opensensorfusion/Makefile | 6 +
drivers/iio/opensensorfusion/osf_core.c | 311 ++++++++++++++++++
drivers/iio/opensensorfusion/osf_core.h | 67 ++++
drivers/iio/opensensorfusion/osf_iio.c | 288 ++++++++++++++++
drivers/iio/opensensorfusion/osf_iio.h | 22 ++
drivers/iio/opensensorfusion/osf_protocol.c | 220 +++++++++++++
drivers/iio/opensensorfusion/osf_protocol.h | 100 ++++++
drivers/iio/opensensorfusion/osf_serdev.c | 111 +++++++
drivers/iio/opensensorfusion/osf_stream.c | 207 ++++++++++++
drivers/iio/opensensorfusion/osf_stream.h | 31 ++
17 files changed, 1691 insertions(+)
create mode 100644 Documentation/devicetree/bindings/iio/imu/opensensorfusion,osf-uart.yaml
create mode 100644 Documentation/iio/open-sensor-fusion-protocol-v0.rst
create mode 100644 drivers/iio/opensensorfusion/Kconfig
create mode 100644 drivers/iio/opensensorfusion/Makefile
create mode 100644 drivers/iio/opensensorfusion/osf_core.c
create mode 100644 drivers/iio/opensensorfusion/osf_core.h
create mode 100644 drivers/iio/opensensorfusion/osf_iio.c
create mode 100644 drivers/iio/opensensorfusion/osf_iio.h
create mode 100644 drivers/iio/opensensorfusion/osf_protocol.c
create mode 100644 drivers/iio/opensensorfusion/osf_protocol.h
create mode 100644 drivers/iio/opensensorfusion/osf_serdev.c
create mode 100644 drivers/iio/opensensorfusion/osf_stream.c
create mode 100644 drivers/iio/opensensorfusion/osf_stream.h
--
2.43.0