Changes in v2: Generally, the patches were rearranged according to comments from Andy in previous version in order to be more consistent. The refactoring of the ambient temperature was dropped for now because it was a bit more complicated than I thought and this series is already heavy enough. [PATCH v2 01/13]: - New patch [PATCH v2 02/13]: - v1 1/13 - used "optimized" in commit message to not prompt for a fix. - added documentation of where this sleep comes from [PATCH v2 03/13]: - v1 2/13 - Fix indentation of array and removed extra whitespace. [PATCH v2 04/13]: - v1 5/13 - removed extra check inside the set_mode() function. [PATCH v2 06/13]: - v1 1/13 - removed indentation fixes which are fixed later since code is changed in those lines in later commits. [PATCH v2 09/13]: - v1 12/13 - removed unnecessary debug messages - Used struture instead of buffer to push data to userspace [PATCH v2 10/13]: - v1 13/13 - used better naming - made channel index to -1 [PATCH v2 11/13]: - v1 06/13 - removed device from trivial-devices [PATCH v2 12/13]: - v1 07/13 - use devm_regulator_bulk_get_enable() [PATCH v2 13/13]: - v1 08/13 - removed internal usage of dev structure - added missing header in both bme680_core.c and bme680.h - used devm_pm_runtime_enable --- v1: https://lore.kernel.org/linux-iio/20241010210030.33309-1-vassilisamir@xxxxxxxxx This patch series is continuing the work that started on [1] by improving some small issues of the driver in the commits 1,2,3. Commits 4,5 are refactorizing existing code. Commits 6,7,8 are adding DT, regulator and PM support. Commit 9 is refactorizing one macro to attribute. Commit 10,11,12 are refactorizing the read/compensate functions to become generic and add triggered buffer support. Finally, commit 13 adds support for an *output* channel of type IIO_CURRENT in order to preheat the plate that is used to measure the quality of the air. This and the previous series [1] started with the idea to add support for the new bme688 device but due to the structure of the driver I decided that it is better to restructure and improve some things before adding extra funcitonalities. [1]: https://lore.kernel.org/linux-iio/20240609233826.330516-1-vassilisamir@xxxxxxxxx Vasileios Amoiridis (13): iio: chemical: bme680: Fix missing header iio: chemical: bme680: optimize startup time iio: chemical: bme680: avoid using camel case iio: chemical: bme680: refactorize set_mode() mode iio: chemical: bme680: move to fsleep() iio: chemical: bme680: Fix indentation and unnecessary spaces iio: chemical: bme680: generalize read_*() functions iio: chemical: bme680: Add SCALE and RAW channels iio: chemical: bme680: Add triggered buffer support iio: chemical: bme680: Add support for preheat current dt-bindings: iio: add binding for BME680 driver iio: chemical: bme680: add regulators iio: chemical: bme680: add power management .../bindings/iio/chemical/bosch,bme680.yaml | 64 +++ .../devicetree/bindings/trivial-devices.yaml | 2 - drivers/iio/chemical/Kconfig | 2 + drivers/iio/chemical/bme680.h | 11 +- drivers/iio/chemical/bme680_core.c | 505 +++++++++++++++--- 5 files changed, 508 insertions(+), 76 deletions(-) create mode 100644 Documentation/devicetree/bindings/iio/chemical/bosch,bme680.yaml -- 2.43.0