iio: pressure: hsc030pa add mandatory delay
authorPetre Rodan <petre.rodan@subdimension.ro>
Sun, 11 Feb 2024 07:56:36 +0000 (09:56 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 19 Feb 2024 19:32:22 +0000 (19:32 +0000)
Add a mandatory 2ms delay between consecutive chip reads.

A Technical Note pdf specifies that the measurement cycle in these
chips takes around 1.26ms. By adding this 2ms delay we make sure that
we never get stale measurements.

For more details, please see "Figure 1" in the pdf below:

https://prod-edam.honeywell.com/content/dam/honeywell-edam/sps/siot/en-us/products/sensors/pressure-sensors/common/documents/sps-siot-sleep-mode-technical-note-008286-1-en-ciid-155793.pdf

Signed-off-by: Petre Rodan <petre.rodan@subdimension.ro>
Link: https://lore.kernel.org/r/20240211075645.28777-6-petre.rodan@subdimension.ro
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/pressure/hsc030pa.h
drivers/iio/pressure/hsc030pa_i2c.c
drivers/iio/pressure/hsc030pa_spi.c

index f1079a70799fa2242955298b75dc751765152f82..56dc8e88194bc2f911273ae91b8e7ec9cae02c2f 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/iio/iio.h>
 
 #define HSC_REG_MEASUREMENT_RD_SIZE 4
+#define HSC_RESP_TIME_MS            2
 
 struct device;
 
index b5810bafef40f4fcf254ad9981b0add2e1ca7c89..b3fd230e71da12a34c3b26e1d3b01267faa6c3bf 100644 (file)
@@ -8,6 +8,7 @@
  * Datasheet: https://prod-edam.honeywell.com/content/dam/honeywell-edam/sps/siot/en-us/products/sensors/pressure-sensors/common/documents/sps-siot-sleep-mode-technical-note-008286-1-en-ciid-155793.pdf
  */
 
+#include <linux/delay.h>
 #include <linux/device.h>
 #include <linux/errno.h>
 #include <linux/i2c.h>
@@ -25,6 +26,8 @@ static int hsc_i2c_recv(struct hsc_data *data)
        struct i2c_msg msg;
        int ret;
 
+       msleep_interruptible(HSC_RESP_TIME_MS);
+
        msg.addr = client->addr;
        msg.flags = client->flags | I2C_M_RD;
        msg.len = HSC_REG_MEASUREMENT_RD_SIZE;
index 8d3441f1dcf96786a38c72fad8c9fbe025a0ff2c..818fa630345450080d2111d5bfc7c36ecb58d81f 100644 (file)
@@ -8,6 +8,7 @@
  * Datasheet: https://prod-edam.honeywell.com/content/dam/honeywell-edam/sps/siot/en-us/products/sensors/pressure-sensors/common/documents/sps-siot-sleep-mode-technical-note-008286-1-en-ciid-155793.pdf
  */
 
+#include <linux/delay.h>
 #include <linux/device.h>
 #include <linux/mod_devicetable.h>
 #include <linux/module.h>
@@ -28,6 +29,7 @@ static int hsc_spi_recv(struct hsc_data *data)
                .len = HSC_REG_MEASUREMENT_RD_SIZE,
        };
 
+       msleep_interruptible(HSC_RESP_TIME_MS);
        return spi_sync_transfer(spi, &xfer, 1);
 }