]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iio: adc: ad799x: Switch to sparse friendly iio_device_claim/release_direct()
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 17 Feb 2025 14:16:19 +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.

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

index aa44b4e2542b2679c6b5fbe7346e3e9dc17721af..993f4651b73a72fd4edb5f1e835ed735ab60c58a 100644 (file)
@@ -291,13 +291,12 @@ static int ad799x_read_raw(struct iio_dev *indio_dev,
 
        switch (m) {
        case IIO_CHAN_INFO_RAW:
-               ret = iio_device_claim_direct_mode(indio_dev);
-               if (ret)
-                       return ret;
+               if (!iio_device_claim_direct(indio_dev))
+                       return -EBUSY;
                mutex_lock(&st->lock);
                ret = ad799x_scan_direct(st, chan->scan_index);
                mutex_unlock(&st->lock);
-               iio_device_release_direct_mode(indio_dev);
+               iio_device_release_direct(indio_dev);
 
                if (ret < 0)
                        return ret;
@@ -411,9 +410,8 @@ static int ad799x_write_event_config(struct iio_dev *indio_dev,
        struct ad799x_state *st = iio_priv(indio_dev);
        int ret;
 
-       ret = iio_device_claim_direct_mode(indio_dev);
-       if (ret)
-               return ret;
+       if (!iio_device_claim_direct(indio_dev))
+               return -EBUSY;
 
        mutex_lock(&st->lock);
 
@@ -429,7 +427,7 @@ static int ad799x_write_event_config(struct iio_dev *indio_dev,
 
        ret = ad799x_write_config(st, st->config);
        mutex_unlock(&st->lock);
-       iio_device_release_direct_mode(indio_dev);
+       iio_device_release_direct(indio_dev);
        return ret;
 }