]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iio: adc: ad7192: Grab direct mode for calibration
authorUwe Kleine-König <u.kleine-koenig@baylibre.com>
Thu, 27 Feb 2025 11:35:28 +0000 (12:35 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Wed, 5 Mar 2025 12:38:46 +0000 (12:38 +0000)
While a calibration is running, better don't make the device do anything
else.

To enforce that, grab direct mode during calibration.

Fixes: 42776c14c692 ("staging: iio: adc: ad7192: Add system calibration support")
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Link: https://patch.msgid.link/8aade802afca6a89641e24c1ae1d4b8d82cff58d.1740655250.git.u.kleine-koenig@baylibre.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/ad7192.c

index f6150b905286f82683bf8d6532af557d054fba1b..15dc6e6854e8388edb45ee5e61be838e76665b5e 100644 (file)
@@ -257,6 +257,9 @@ static ssize_t ad7192_write_syscalib(struct iio_dev *indio_dev,
        if (ret)
                return ret;
 
+       if (!iio_device_claim_direct(indio_dev))
+               return -EBUSY;
+
        temp = st->syscalib_mode[chan->channel];
        if (sys_calib) {
                if (temp == AD7192_SYSCALIB_ZERO_SCALE)
@@ -267,6 +270,8 @@ static ssize_t ad7192_write_syscalib(struct iio_dev *indio_dev,
                                              chan->address);
        }
 
+       iio_device_release_direct(indio_dev);
+
        return ret ? ret : len;
 }