mirror of
https://github.com/torvalds/linux.git
synced 2026-09-26 18:12:03 +02:00
Add a driver for the Sensirion SLF3S family of digital liquid-flow sensors on I2C. Currently supported variants are SLF3S-0600F, SLF3S-1300F and SLF3S-4000B; they share the same register map and differ only in flow-scale factor and calibrated measurement range. The variant (and therefore the scale) is auto-detected from the product-information register at probe time; a sensor reporting an unknown sub-type falls back to the variant named in the device tree / I2C table, so a drop-in replacement part keeps working on a kernel that does not know its sub-type yet. Each measurement frame returns a 16-bit signed flow value, a 16-bit signed temperature reading and a status word, each protected by a CRC-8 byte. The driver exposes the flow rate as IIO_VOLUMEFLOW and the temperature as IIO_TEMP via the standard IIO read_raw / read_scale interface. The volume-flow scale is reported in m^3/s. As the per-LSB scale is on the order of 1e-12 m^3/s, it is emitted as a 64-bit fixed-point value with femto (1e-15) resolution (IIO_VAL_DECIMAL64_FEMTO) so the small SI value keeps full precision. This relies on the IIO_VAL_DECIMAL64_FEMTO format type added earlier in this series. The active calibration medium can be switched at runtime between the factory-calibrated water and isopropyl-alcohol modes via the in_volumeflow_medium sysfs attribute; the sensor starts in water mode after probe. The sensor has no low-power state of its own, so system suspend stops the measurement and disables the vdd supply; resume powers the sensor back up, waits out the power-up time and restarts the measurement with the previously active medium, following the scd30/scd4x precedent. This driver also creates the drivers/iio/flow/ subdirectory and the corresponding Kconfig/Makefile glue. Signed-off-by: Wadim Mueller <wafgo01@gmail.com> Signed-off-by: Jonathan Cameron <jonathan.cameron@oss.qualcomm.com>
22 lines
914 B
Plaintext
22 lines
914 B
Plaintext
What: /sys/bus/iio/devices/iio:deviceX/in_volumeflow_medium
|
|
What: /sys/bus/iio/devices/iio:deviceX/in_volumeflowY_medium
|
|
KernelVersion: 7.3
|
|
Contact: linux-iio@vger.kernel.org
|
|
Description:
|
|
The calibration medium the flow sensor uses to convert its
|
|
raw reading into a volumetric flow rate. Liquid flow sensors
|
|
are factory-calibrated per medium, so the selected medium has
|
|
to match the fluid actually flowing through the sensor for the
|
|
reported flow rate to be correct.
|
|
|
|
Reading returns the currently active medium; writing one of the
|
|
strings listed in in_volumeflow_medium_available selects it.
|
|
|
|
What: /sys/bus/iio/devices/iio:deviceX/in_volumeflow_medium_available
|
|
What: /sys/bus/iio/devices/iio:deviceX/in_volumeflowY_medium_available
|
|
KernelVersion: 7.3
|
|
Contact: linux-iio@vger.kernel.org
|
|
Description:
|
|
Space separated list of the calibration media supported by the
|
|
device, e.g. "water ipa".
|