]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iio: adc: ad7606: Switch to sparse friendly iio_device_claim/release_direct()
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 17 Feb 2025 14:16:14 +0000 (14:16 +0000)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Tue, 4 Mar 2025 13:17:49 +0000 (13:17 +0000)
These new functions allow sparse to find failures to release
direct mode reducing chances of bugs over the claim_direct_mode()
functions that are deprecated.

This driver got partly converted during removal of the _scoped form.
However some more cases got added in parallel.

Reviewed-by: Nuno Sá <nuno.sa@analog.com>
Link: https://patch.msgid.link/20250217141630.897334-15-jic23@kernel.org
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/ad7606.c

index 87908cc51e4862f86f7789a6e00c19d337c169bb..f566248db70a797842afb0a3101408b379b29c30 100644 (file)
@@ -862,11 +862,10 @@ static int ad7606_write_raw(struct iio_dev *indio_dev,
                val = (val * MICRO) + val2;
                i = find_closest(val, scale_avail_uv, cs->num_scales);
 
-               ret = iio_device_claim_direct_mode(indio_dev);
-               if (ret < 0)
-                       return ret;
+               if (!iio_device_claim_direct(indio_dev))
+                       return -EBUSY;
                ret = st->write_scale(indio_dev, ch, i + cs->reg_offset);
-               iio_device_release_direct_mode(indio_dev);
+               iio_device_release_direct(indio_dev);
                if (ret < 0)
                        return ret;
                cs->range = i;
@@ -878,11 +877,10 @@ static int ad7606_write_raw(struct iio_dev *indio_dev,
                i = find_closest(val, st->oversampling_avail,
                                 st->num_os_ratios);
 
-               ret = iio_device_claim_direct_mode(indio_dev);
-               if (ret < 0)
-                       return ret;
+               if (!iio_device_claim_direct(indio_dev))
+                       return -EBUSY;
                ret = st->write_os(indio_dev, i);
-               iio_device_release_direct_mode(indio_dev);
+               iio_device_release_direct(indio_dev);
                if (ret < 0)
                        return ret;
                st->oversampling = st->oversampling_avail[i];