On Wed, 18 Oct 2023 17:28:16 +0200 Andreas Klinger <ak@xxxxxxxxxxxxx> wrote: > Only the bmp085 can have an End-Of-Conversion (EOC) interrupt. But the > bmp085 and bmp180 share the same chip id. Therefore it's necessary to > distinguish the case in which the interrupt is set. > > Fix the if statement so that only when the interrupt is set and the chip > id is recognized the interrupt is requested. > > This bug exists since the support of EOC interrupt was introduced. > Fixes: aae953949651 ("iio: pressure: bmp280: add support for BMP085 EOC interrupt") > > Also add a link to bmp085 datasheet for reference. > Fixes tag is part of the tags block so needs to be down here. > Suggested-by: Sergei Korolev <dssoftsk@xxxxxxxxx> > Signed-off-by: Andreas Klinger <ak@xxxxxxxxxxxxx> However, it's also already fixed upstream I think. That's not filtered back around to my togreg branch though as that has an outstanding pull request. Jonathan > --- > drivers/iio/pressure/bmp280-core.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/iio/pressure/bmp280-core.c b/drivers/iio/pressure/bmp280-core.c > index 6089f3f9d8f4..9b7beeb1c088 100644 > --- a/drivers/iio/pressure/bmp280-core.c > +++ b/drivers/iio/pressure/bmp280-core.c > @@ -9,6 +9,7 @@ > * Driver for Bosch Sensortec BMP180 and BMP280 digital pressure sensor. > * > * Datasheet: > + * https://www.sparkfun.com/datasheets/Components/General/BST-BMP085-DS000-05.pdf > * https://cdn-shop.adafruit.com/datasheets/BST-BMP180-DS000-09.pdf > * https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmp280-ds001.pdf > * https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bme280-ds002.pdf > @@ -2179,7 +2180,7 @@ int bmp280_common_probe(struct device *dev, > * however as it happens, the BMP085 shares the chip ID of BMP180 > * so we look for an IRQ if we have that. > */ > - if (irq > 0 || (chip_id == BMP180_CHIP_ID)) { > + if (irq > 0 && (chip_id == BMP180_CHIP_ID)) { > ret = bmp085_fetch_eoc_irq(dev, name, irq, data); > if (ret) > return ret;