[PATCH v5 0/4] iio: flow: Sensirion SLF3S liquid flow sensor
From: Wadim Mueller
Date: Tue Jul 14 2026 - 04:54:13 EST
Hi all,
this series adds a driver for the Sensirion SLF3S family of I2C liquid
flow sensors (SLF3S-0600F / -1300F / -4000B) and a new IIO_VOLUMEFLOW
channel type.
The series is now based on iio.git testing, which already contains
Rodrigo Alencar's IIO_VAL_DECIMAL64_* core formatting work, so the
external dependency listed in v4 is gone. Patch 3/4 adds the
IIO_VAL_DECIMAL64_FEMTO format type on top of it.
The compatible/fallback layout of the dt-binding is intentionally
unchanged from v4 while the discussion on the v4 thread about the
preferred fallback scheme is still open:
https://lore.kernel.org/linux-iio/20260621145117.70b2d50e@jic23-huawei/
Changes since v4
----------------
* rebased onto iio.git testing; trivial conflict with the new
IIO_COVERAGE entries in the channel-type lists resolved (1/4)
* driver: include err.h for PTR_ERR() and math.h for struct
s32_fract, per Andy
* driver: fold the per-variant scale_num/scale_den pair into a
struct s32_fract, per Andy
* driver: add enum slf3s_variant_id and use it for the variant
table and the I2C/OF match tables instead of bare indices, per
Andy
* driver: slf3s_send_cmd(): drop the "at_least 2" parameter
annotation, decouple the ret assignment from its declaration and
check errors first, per Andy
* driver: use sizeof() instead of ARRAY_SIZE() for the measurement
byte buffer, per Andy
* driver: parenthesise the (FEMTO / MILLI) factor so it folds into
a single constant multiplication, per Andy
* driver: derive the temperature scale from MILLIDEGREE_PER_DEGREE
instead of a bare 1000, per Andy
* driver: checked the struct slf3s_data layout (re Andy's pahole
question): the non-pointer members total 260 bytes, so one 4-byte
hole remains for any member order; left as is
* driver: drop the inline comment on the mutex that duplicated the
kernel-doc, per Jonathan
* driver: fix the duplicated argument in the DT/sensor variant
mismatch dev_info(), per Jonathan
* driver: reformat the i2c_device_id/of_device_id tables to one
member per line, per Jonathan
* MAINTAINERS: updated Maxwells address in the R: entry to
maxwell@xxxxxxxxxxx, as he requested on the v4 thread
The signaling-flags word (air-in-line / high-flow / smoothing status) in
each measurement frame is intentionally not read; exposing it can be a
later follow-up.
Thanks,
Wadim
Wadim Mueller (4):
iio: types: add IIO_VOLUMEFLOW channel type
dt-bindings: iio: flow: add Sensirion SLF3S liquid flow sensor
iio: core: add IIO_VAL_DECIMAL64_FEMTO format type
iio: flow: add Sensirion SLF3S liquid flow sensor driver
Documentation/ABI/testing/sysfs-bus-iio | 11 +
Documentation/ABI/testing/sysfs-bus-iio-flow | 21 +
.../bindings/iio/flow/sensirion,slf3s.yaml | 58 ++
MAINTAINERS | 8 +
drivers/iio/Kconfig | 1 +
drivers/iio/Makefile | 1 +
drivers/iio/flow/Kconfig | 22 +
drivers/iio/flow/Makefile | 7 +
drivers/iio/flow/slf3s.c | 541 ++++++++++++++++++
drivers/iio/industrialio-core.c | 3 +
include/linux/iio/types.h | 1 +
include/uapi/linux/iio/types.h | 1 +
tools/iio/iio_event_monitor.c | 2 +
13 files changed, 677 insertions(+)
create mode 100644 Documentation/ABI/testing/sysfs-bus-iio-flow
create mode 100644 Documentation/devicetree/bindings/iio/flow/sensirion,slf3s.yaml
create mode 100644 drivers/iio/flow/Kconfig
create mode 100644 drivers/iio/flow/Makefile
create mode 100644 drivers/iio/flow/slf3s.c
base-commit: a50909aa46dec46de3c73235fc15a7d6f763d996
--
2.43.0