summaryrefslogtreecommitdiffstats
path: root/drivers/iio/pressure/ms5611.h
diff options
context:
space:
mode:
authorGregor Boirie2016-03-01 11:31:38 +0100
committerJonathan Cameron2016-03-05 15:45:14 +0100
commit033691a9a12f684c68f443f3676806dd64011295 (patch)
treed35d94f3b5c6d90efd275b1d9d0248562c576347 /drivers/iio/pressure/ms5611.h
parentiio:pressure:ms5611: complete DT support (diff)
downloadkernel-qcow2-linux-033691a9a12f684c68f443f3676806dd64011295.tar.gz
kernel-qcow2-linux-033691a9a12f684c68f443f3676806dd64011295.tar.xz
kernel-qcow2-linux-033691a9a12f684c68f443f3676806dd64011295.zip
iio:pressure:ms5611: oversampling rate support
Add support for setting and retrieving OverSampling Rate independently for each of the temperature and pressure channels. This allows userspace to fine tune hardware sampling process according to the following tradeoffs : * the higher the OSR, the finer the resolution ; * the higher the OSR, the lower the noise ; BUT: * the higher the OSR, the larger the drift ; * the higher the OSR, the longer the response time, i.e. less samples per unit of time. Signed-off-by: Gregor Boirie <gregor.boirie@parrot.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Diffstat (limited to 'drivers/iio/pressure/ms5611.h')
-rw-r--r--drivers/iio/pressure/ms5611.h20
1 files changed, 14 insertions, 6 deletions
diff --git a/drivers/iio/pressure/ms5611.h b/drivers/iio/pressure/ms5611.h
index 8b08e4b7e3a9..d725a3077a17 100644
--- a/drivers/iio/pressure/ms5611.h
+++ b/drivers/iio/pressure/ms5611.h
@@ -19,12 +19,6 @@
#define MS5611_RESET 0x1e
#define MS5611_READ_ADC 0x00
#define MS5611_READ_PROM_WORD 0xA0
-#define MS5611_START_TEMP_CONV 0x58
-#define MS5611_START_PRESSURE_CONV 0x48
-
-#define MS5611_CONV_TIME_MIN 9040
-#define MS5611_CONV_TIME_MAX 10000
-
#define MS5611_PROM_WORDS_NB 8
enum {
@@ -39,10 +33,24 @@ struct ms5611_chip_info {
s32 *temp, s32 *pressure);
};
+/*
+ * OverSampling Rate descriptor.
+ * Warning: cmd MUST be kept aligned on a word boundary (see
+ * m5611_spi_read_adc_temp_and_pressure in ms5611_spi.c).
+ */
+struct ms5611_osr {
+ unsigned long conv_usec;
+ u8 cmd;
+ unsigned short rate;
+};
+
struct ms5611_state {
void *client;
struct mutex lock;
+ const struct ms5611_osr *pressure_osr;
+ const struct ms5611_osr *temp_osr;
+
int (*reset)(struct device *dev);
int (*read_prom_word)(struct device *dev, int index, u16 *word);
int (*read_adc_temp_and_pressure)(struct device *dev,