mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 22:14: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>
118 lines
3.4 KiB
Plaintext
118 lines
3.4 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
# Industrial I/O subsystem configuration
|
|
#
|
|
|
|
menuconfig IIO
|
|
tristate "Industrial I/O support"
|
|
help
|
|
The industrial I/O subsystem provides a unified framework for
|
|
drivers for many different types of embedded sensors using a
|
|
number of different physical interfaces (i2c, spi, etc).
|
|
|
|
if IIO
|
|
|
|
config IIO_BUFFER
|
|
bool "Enable buffer support within IIO"
|
|
select DMA_SHARED_BUFFER
|
|
help
|
|
Provide core support for various buffer based data
|
|
acquisition methods.
|
|
|
|
if IIO_BUFFER
|
|
source "drivers/iio/buffer/Kconfig"
|
|
endif # IIO_BUFFER
|
|
|
|
config IIO_CONFIGFS
|
|
tristate "Enable IIO configuration via configfs"
|
|
select CONFIGFS_FS
|
|
help
|
|
This allows configuring various IIO bits through configfs
|
|
(e.g. software triggers). For more info see
|
|
Documentation/iio/iio_configfs.rst.
|
|
|
|
config IIO_GTS_HELPER
|
|
tristate
|
|
|
|
config IIO_TRIGGER
|
|
bool "Enable triggered sampling support"
|
|
help
|
|
Provides IIO core support for triggers. Currently these
|
|
are used to initialize capture of samples to push into
|
|
buffers. The triggers are effectively a 'capture
|
|
data now' interrupt.
|
|
|
|
config IIO_CONSUMERS_PER_TRIGGER
|
|
int "Maximum number of consumers per trigger"
|
|
depends on IIO_TRIGGER
|
|
default "2"
|
|
help
|
|
This value controls the maximum number of consumers that a
|
|
given trigger may handle. Default is 2.
|
|
|
|
config IIO_SW_DEVICE
|
|
tristate "Enable software IIO device support"
|
|
select IIO_CONFIGFS
|
|
help
|
|
Provides IIO core support for software devices. A software
|
|
device can be created via configfs or directly by a driver
|
|
using the API provided.
|
|
|
|
config IIO_SW_TRIGGER
|
|
tristate "Enable software triggers support"
|
|
select IIO_CONFIGFS
|
|
help
|
|
Provides IIO core support for software triggers. A software
|
|
trigger can be created via configfs or directly by a driver
|
|
using the API provided.
|
|
|
|
config IIO_TRIGGERED_EVENT
|
|
tristate "Enable triggered events support"
|
|
select IIO_TRIGGER
|
|
help
|
|
Provides helper functions for setting up triggered events.
|
|
|
|
config IIO_BACKEND
|
|
tristate
|
|
help
|
|
Framework to handle complex IIO aggregate devices. The typical
|
|
architecture that can make use of this framework is to have one
|
|
device as the frontend device which can be "linked" against one or
|
|
multiple backend devices. The framework then makes it easy to get
|
|
and control such backend devices.
|
|
|
|
source "drivers/iio/accel/Kconfig"
|
|
source "drivers/iio/adc/Kconfig"
|
|
source "drivers/iio/addac/Kconfig"
|
|
source "drivers/iio/afe/Kconfig"
|
|
source "drivers/iio/amplifiers/Kconfig"
|
|
source "drivers/iio/cdc/Kconfig"
|
|
source "drivers/iio/chemical/Kconfig"
|
|
source "drivers/iio/common/Kconfig"
|
|
source "drivers/iio/dac/Kconfig"
|
|
source "drivers/iio/dummy/Kconfig"
|
|
source "drivers/iio/filter/Kconfig"
|
|
source "drivers/iio/flow/Kconfig"
|
|
source "drivers/iio/frequency/Kconfig"
|
|
source "drivers/iio/gyro/Kconfig"
|
|
source "drivers/iio/health/Kconfig"
|
|
source "drivers/iio/humidity/Kconfig"
|
|
source "drivers/iio/imu/Kconfig"
|
|
source "drivers/iio/light/Kconfig"
|
|
source "drivers/iio/magnetometer/Kconfig"
|
|
source "drivers/iio/multiplexer/Kconfig"
|
|
source "drivers/iio/orientation/Kconfig"
|
|
source "drivers/iio/test/Kconfig"
|
|
if IIO_TRIGGER
|
|
source "drivers/iio/trigger/Kconfig"
|
|
endif #IIO_TRIGGER
|
|
source "drivers/iio/position/Kconfig"
|
|
source "drivers/iio/potentiometer/Kconfig"
|
|
source "drivers/iio/potentiostat/Kconfig"
|
|
source "drivers/iio/pressure/Kconfig"
|
|
source "drivers/iio/proximity/Kconfig"
|
|
source "drivers/iio/resolver/Kconfig"
|
|
source "drivers/iio/temperature/Kconfig"
|
|
|
|
endif # IIO
|