[PATCH v8 00/10] iio: pressure: dps310: FIFO and triggered buffer support

From: Rupesh Majhi

Date: Mon Sep 21 2026 - 14:35:03 EST


Jonathan's review fixes on v7. Same functionality, except the flush hook,
which now holds the device mode while it drains.

Since v7:
- the timestamp scan index lands in patch 5, where the enum is
- the FIFO drain reads with one loop counter, declarations split
- dps310_fifo_hold_free() is gone. It was a bare kfree() once the
clearing went, and the alloc side sets the fields instead
- the flush hook holds the mode across the drain, so a concurrent
buffer disable cannot free active_scan_mask under it. Found by
Sashiko on v7. Done with IIO_DEV_GUARD_CURRENT_MODE() and not the
buffer mode claim, which patch 10 warns on, see the reply on 9/10

Retested on a DPS310 on a BeagleBone Black: six of six buffer enables
produce data, and 64 scan reads come back whole at watermark 1, 8 and 24.
Built with clang 23 and CONFIG_WARN_CONTEXT_ANALYSIS, no warnings.

Patch 10 opts into clang context analysis and comes last, so it can be
dropped alone.

Deferred to a cleanup series: min_t() to min(), 1000 to KILO,
30 * USEC_PER_MSEC, David's define sort, c00/c10 via get_unaligned_be24().

Rupesh Majhi (10):
iio: pressure: dps310: fix CFG_REG bit definitions
iio: pressure: dps310: use a local device pointer in probe
iio: pressure: dps310: use get_unaligned_be24() for the 24-bit results
iio: pressure: dps310: take the lock once per raw read
iio: pressure: dps310: add triggered buffer support
iio: core: add an accessor for scan_timestamp
iio: pressure: dps310: read buffered samples from the hardware FIFO
iio: pressure: dps310: derive the drain interval from the watermark
iio: pressure: dps310: implement .hwfifo_flush_to_buffer()
iio: pressure: dps310: check the lock markings with context analysis

drivers/iio/pressure/Kconfig | 2 +
drivers/iio/pressure/Makefile | 2 +
drivers/iio/pressure/dps310.c | 726 ++++++++++++++++++++++++++++++----
include/linux/iio/iio.h | 9 +
4 files changed, 652 insertions(+), 87 deletions(-)

--
2.43.0