linux/drivers/iio/chemical
Vasileios Amoiridis 77641e5a47 iio: chemical: bme680: Fix read/write ops to device by adding mutexes
Add mutexes in the {read/write}_raw() functions of the device to guard the
read/write of data from/to the device. This is necessary because for any
operation other than temperature, multiple reads need to take place from
the device. Even though regmap has a locking by itself, it won't protect us
from multiple applications trying to read at the same time temperature and
pressure since the pressure reading includes an internal temperature
reading and there is nothing to ensure that this temperature+pressure
reading will happen sequentially without any other operation interfering
in the meantime.

Fixes: 1b3bd85927 ("iio: chemical: Add support for Bosch BME680 sensor")
Signed-off-by: Vasileios Amoiridis <vassilisamir@gmail.com>
Link: https://patch.msgid.link/20240609233826.330516-2-vassilisamir@gmail.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
2024-08-03 10:13:34 +01:00
..
ags02ma.c iio: chemical: add support for Aosong AGS02MA 2023-12-17 14:44:35 +00:00
ams-iaq-core.c iio: chemical: ams-iaq-core: clean up codestyle warning 2024-06-08 14:44:28 +01:00
atlas-ezo-sensor.c iio: chemical: atlas-ezo-sensor: Simplify probe() 2023-09-11 20:12:41 +01:00
atlas-sensor.c iio: chemical: atlas-sensor: Convert enum->pointer for data in the match tables 2023-09-11 20:12:41 +01:00
bme680_core.c iio: chemical: bme680: Fix read/write ops to device by adding mutexes 2024-08-03 10:13:34 +01:00
bme680_i2c.c iio: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 09:48:57 +01:00
bme680_spi.c iio: chemical: bme680: Constify struct regmap_bus 2024-07-29 20:31:10 +01:00
bme680.h iio: chemical: bme680: Fix sensor data read operation 2024-06-09 12:02:34 +01:00
ccs811.c iio: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-05-27 09:48:57 +01:00
ens160_core.c iio: chemical: ens160: add power management support 2024-06-13 19:19:26 +01:00
ens160_i2c.c iio: chemical: ens160: add power management support 2024-06-13 19:19:26 +01:00
ens160_spi.c iio: chemical: ens160: add power management support 2024-06-13 19:19:26 +01:00
ens160.h iio: chemical: ens160: add power management support 2024-06-13 19:19:26 +01:00
Kconfig iio: chemical: add driver for ENS160 sensor 2024-06-13 19:19:25 +01:00
Makefile iio: chemical: add driver for ENS160 sensor 2024-06-13 19:19:25 +01:00
pms7003.c treewide, serdev: change receive_buf() return type to size_t 2024-01-27 18:13:53 -08:00
scd4x.c iio: chemical: scd4x: Add pressure compensation 2023-07-20 19:21:30 +01:00
scd30_core.c iio: chemical: scd30_core: Switch to use dev_err_probe() 2023-01-14 16:17:34 +00:00
scd30_i2c.c iio: Switch i2c drivers back to use .probe() 2023-05-21 18:54:53 +01:00
scd30_serial.c treewide, serdev: change receive_buf() return type to size_t 2024-01-27 18:13:53 -08:00
scd30.h iio: chemical: scd30: Export dev_pm_ops instead of suspend() and resume() 2022-04-05 20:16:34 +02:00
sgp30.c iio: chemical: sgp30: Convert enum->pointer for data in the match tables 2023-09-12 10:42:03 +01:00
sgp40.c iio: Switch i2c drivers back to use .probe() 2023-05-21 18:54:53 +01:00
sps30_i2c.c iio: Switch i2c drivers back to use .probe() 2023-05-21 18:54:53 +01:00
sps30_serial.c treewide, serdev: change receive_buf() return type to size_t 2024-01-27 18:13:53 -08:00
sps30.c iio: chemical: sps30: Move symbol exports into IIO_SPS30 namespace 2022-06-21 21:30:31 +01:00
sps30.h iio: sps30: separate core and interface specific code 2021-05-17 13:49:10 +01:00
sunrise_co2.c iio: Switch i2c drivers back to use .probe() 2023-05-21 18:54:53 +01:00
vz89x.c iio: chemical: vz89x: Convert enum->pointer for data in the match tables 2023-09-11 20:12:41 +01:00