summaryrefslogtreecommitdiff
path: root/drivers/iio/pressure/ms5611.h
diff options
context:
space:
mode:
authorMitja Spes <mitja@lxnav.com>2022-10-21 16:58:20 +0300
committerJonathan Cameron <Jonathan.Cameron@huawei.com>2022-10-29 14:37:45 +0300
commit17f442e7e47579d3881fc4d47354eaef09302e6f (patch)
treea6a4f1625f777064c4f3185a10fb32cc3b2abf9d /drivers/iio/pressure/ms5611.h
parent57572cacd36e6d4be7722d7770d23f4430219827 (diff)
downloadlinux-17f442e7e47579d3881fc4d47354eaef09302e6f.tar.xz
iio: pressure: ms5611: fixed value compensation bug
When using multiple instances of this driver the compensation PROM was overwritten by the last initialized sensor. Now each sensor has own PROM storage. Signed-off-by: Mitja Spes <mitja@lxnav.com> Fixes: 9690d81a02dc ("iio: pressure: ms5611: add support for MS5607 temperature and pressure sensor") Link: https://lore.kernel.org/r/20221021135827.1444793-2-mitja@lxnav.com Cc: <Stable@vger.kernel.org> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Diffstat (limited to 'drivers/iio/pressure/ms5611.h')
-rw-r--r--drivers/iio/pressure/ms5611.h12
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/iio/pressure/ms5611.h b/drivers/iio/pressure/ms5611.h
index cbc9349c342a..550b75b7186f 100644
--- a/drivers/iio/pressure/ms5611.h
+++ b/drivers/iio/pressure/ms5611.h
@@ -25,13 +25,6 @@ enum {
MS5607,
};
-struct ms5611_chip_info {
- u16 prom[MS5611_PROM_WORDS_NB];
-
- int (*temp_and_pressure_compensate)(struct ms5611_chip_info *chip_info,
- s32 *temp, s32 *pressure);
-};
-
/*
* OverSampling Rate descriptor.
* Warning: cmd MUST be kept aligned on a word boundary (see
@@ -50,12 +43,15 @@ struct ms5611_state {
const struct ms5611_osr *pressure_osr;
const struct ms5611_osr *temp_osr;
+ u16 prom[MS5611_PROM_WORDS_NB];
+
int (*reset)(struct ms5611_state *st);
int (*read_prom_word)(struct ms5611_state *st, int index, u16 *word);
int (*read_adc_temp_and_pressure)(struct ms5611_state *st,
s32 *temp, s32 *pressure);
- struct ms5611_chip_info *chip_info;
+ int (*compensate_temp_and_pressure)(struct ms5611_state *st, s32 *temp,
+ s32 *pressure);
struct regulator *vdd;
};