Changes in v3: Patch 2: Add guard(mutex) as per request {read/write}_raw() functions. Patch 3: Patch 2 of v2. Added IIO return value as per request. Patch 4: Patch 3 of v2. Patch 5: Patch 4 of v2. Patch 6: Completely different approach from v2. Instead of leveraging the functionality of the read_*() functions for the oneshot capture, burst reads were used in order to read all the values in one single read operation. This minimizes the number of accesses to the device to just 1 time, which all the values are being read. Different buffer_handler() functions were implemented for the different "families" of sensors because there were a lot of differences in the register configuration and read operation for different sensors. BMP085 and BMP180 have a very well defined read operation that is kept in the buffer_handler(). There is no option for a burst read in these sensors. BM(P/E)2xx, BMP3xx, and BMP5xx have their own buffer_handler() functions. Registers, endianess and compensation formulas are different in each one of those 3 categories which doesn't allow for a more generic buffer_handler(). [v2] https://lore.kernel.org/linux-iio/20240313174007.1934983-1-vassilisamir@xxxxxxxxx [v1] https://lore.kernel.org/linux-iio/20240303165300.468011-1-vassilisamir@xxxxxxxxx Vasileios Amoiridis (6): iio: pressure: BMP280 core driver headers sorting iio: pressure: Introduce new cleanup routines to BMP280 driver *_raw() functions iio: pressure: Generalize read_{temp/press/humid}() functions iio: pressure: Add SCALE and RAW values for channels iio: pressure: Add timestamp and scan_masks for BMP280 driver iio: pressure: Add triggered buffer support for BMP280 driver drivers/iio/pressure/Kconfig | 2 + drivers/iio/pressure/bmp280-core.c | 727 +++++++++++++++++++++-------- drivers/iio/pressure/bmp280-spi.c | 8 +- drivers/iio/pressure/bmp280.h | 28 +- 4 files changed, 570 insertions(+), 195 deletions(-) -- 2.25.1