From: Vasileios Amoiridis <vassilisamir@gmail.com>
To: jic23@kernel.org
Cc: dpfrey@gmail.com, himanshujha199640@gmail.com, lars@metafoo.de,
linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org,
mike.looijmans@topic.nl, vassilisamir@gmail.com
Subject: [PATCH v3 14/15] iio: chemical: bme680: Move forced mode setup in ->read_raw()
Date: Mon, 10 Jun 2024 01:38:25 +0200 [thread overview]
Message-ID: <20240609233826.330516-15-vassilisamir@gmail.com> (raw)
In-Reply-To: <20240609233826.330516-1-vassilisamir@gmail.com>
Whenever the sensor is set to forced mode, a TPHG cycle is triggered and
the values of temperature, pressure, humidity and gas become ready to be
read.
The setup of the forced mode to trigger measurements was located inside
the read_{temp/gas}() functions. This was not posing a functional problem
since read_{humid/press}() are internally calling read_temp() so the
forced mode is set through this call.
This is not very clear and it is kind of hidden that regardless of the
measurement, the setup of the forced mode needs to happen before any
measurement.
Signed-off-by: Vasileios Amoiridis <vassilisamir@gmail.com>
---
drivers/iio/chemical/bme680_core.c | 28 ++++++++++------------------
1 file changed, 10 insertions(+), 18 deletions(-)
diff --git a/drivers/iio/chemical/bme680_core.c b/drivers/iio/chemical/bme680_core.c
index d08f32ecd139..3785b4d014db 100644
--- a/drivers/iio/chemical/bme680_core.c
+++ b/drivers/iio/chemical/bme680_core.c
@@ -572,15 +572,6 @@ static int bme680_read_temp(struct bme680_data *data, int *val)
u32 adc_temp;
s16 comp_temp;
- /* set forced mode to trigger measurement */
- ret = bme680_set_mode(data, true);
- if (ret < 0)
- return ret;
-
- ret = bme680_wait_for_eoc(data);
- if (ret)
- return ret;
-
ret = regmap_bulk_read(data->regmap, BME680_REG_TEMP_MSB,
data->buf, BME680_TEMP_NUM_BYTES);
if (ret < 0) {
@@ -683,15 +674,6 @@ static int bme680_read_gas(struct bme680_data *data,
u16 adc_gas_res, gas_regs_val;
u8 gas_range;
- /* set forced mode to trigger measurement */
- ret = bme680_set_mode(data, true);
- if (ret < 0)
- return ret;
-
- ret = bme680_wait_for_eoc(data);
- if (ret)
- return ret;
-
ret = regmap_read(data->regmap, BME680_REG_MEAS_STAT_0, &data->check);
if (data->check & BME680_GAS_MEAS_BIT) {
dev_err(dev, "gas measurement incomplete\n");
@@ -730,9 +712,19 @@ static int bme680_read_raw(struct iio_dev *indio_dev,
int *val, int *val2, long mask)
{
struct bme680_data *data = iio_priv(indio_dev);
+ int ret;
guard(mutex)(&data->lock);
+ /* set forced mode to trigger measurement */
+ ret = bme680_set_mode(data, true);
+ if (ret < 0)
+ return ret;
+
+ ret = bme680_wait_for_eoc(data);
+ if (ret)
+ return ret;
+
switch (mask) {
case IIO_CHAN_INFO_PROCESSED:
switch (chan->type) {
--
2.25.1
next prev parent reply other threads:[~2024-06-09 23:38 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-09 23:38 [PATCH v3 00/15] iio: chemical: bme680: Driver cleanup Vasileios Amoiridis
2024-06-09 23:38 ` [PATCH v3 01/15] iio: chemical: bme680: Fix read/write ops to device by adding mutexes Vasileios Amoiridis
2024-06-09 23:38 ` [PATCH v3 02/15] iio: chemical: bme680: Fix typo in define Vasileios Amoiridis
2024-06-09 23:38 ` [PATCH v3 03/15] iio: chemical: bme680: Drop unnecessary casts and correct adc data types Vasileios Amoiridis
2024-06-09 23:38 ` [PATCH v3 04/15] iio: chemical: bme680: Remove remaining ACPI-only stuff Vasileios Amoiridis
2024-06-09 23:38 ` [PATCH v3 05/15] iio: chemical: bme680: Sort headers alphabetically Vasileios Amoiridis
2024-06-09 23:38 ` [PATCH v3 06/15] iio: chemical: bme680: Remove duplicate register read Vasileios Amoiridis
2024-06-09 23:38 ` [PATCH v3 07/15] iio: chemical: bme680: Use bulk reads for calibration data Vasileios Amoiridis
2024-06-09 23:38 ` [PATCH v3 08/15] iio: chemical: bme680: Allocate IIO device before chip initialization Vasileios Amoiridis
2024-06-09 23:38 ` [PATCH v3 09/15] iio: chemical: bme680: Add read buffers in read/write buffer union Vasileios Amoiridis
2024-06-09 23:38 ` [PATCH v3 10/15] iio: chemical: bme680: Make error checks consistent Vasileios Amoiridis
2024-06-09 23:38 ` [PATCH v3 11/15] iio: chemical: bme680: Modify startup procedure Vasileios Amoiridis
2024-06-09 23:38 ` [PATCH v3 12/15] iio: chemical: bme680: Move probe errors to dev_err_probe() Vasileios Amoiridis
2024-06-09 23:38 ` [PATCH v3 13/15] iio: chemical: bme680: Remove redundant gas configuration Vasileios Amoiridis
2024-06-09 23:38 ` Vasileios Amoiridis [this message]
2024-06-09 23:38 ` [PATCH v3 15/15] iio: chemical: bme680: Refactorize reading functions Vasileios Amoiridis
2024-06-30 20:26 ` [PATCH v3 00/15] iio: chemical: bme680: Driver cleanup Vasileios Amoiridis
2024-07-01 12:44 ` Jonathan Cameron
2024-07-01 17:00 ` Vasileios Amoiridis
2024-07-07 16:41 ` Jonathan Cameron
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240609233826.330516-15-vassilisamir@gmail.com \
--to=vassilisamir@gmail.com \
--cc=dpfrey@gmail.com \
--cc=himanshujha199640@gmail.com \
--cc=jic23@kernel.org \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mike.looijmans@topic.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox