iio: light: ltr501: Switch to sparse friendly iio_device_claim/release_direct()
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 9 Mar 2025 17:06:23 +0000 (17:06 +0000)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Tue, 22 Apr 2025 18:09:56 +0000 (19:09 +0100)
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: David Lechner <dlechner@baylibre.com>
Link: https://patch.msgid.link/20250309170633.1347476-9-jic23@kernel.org
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/light/ltr501.c

index c44c852a7d768f4d08550bb287bd9e0d59b8834c..23fd0713c64b081ad79279adf0e82fca62b3120c 100644 (file)
@@ -688,14 +688,13 @@ static int ltr501_read_raw(struct iio_dev *indio_dev,
        case IIO_CHAN_INFO_PROCESSED:
                switch (chan->type) {
                case IIO_LIGHT:
-                       ret = iio_device_claim_direct_mode(indio_dev);
-                       if (ret)
-                               return ret;
+                       if (!iio_device_claim_direct(indio_dev))
+                               return -EBUSY;
 
                        mutex_lock(&data->lock_als);
                        ret = ltr501_read_als(data, buf);
                        mutex_unlock(&data->lock_als);
-                       iio_device_release_direct_mode(indio_dev);
+                       iio_device_release_direct(indio_dev);
                        if (ret < 0)
                                return ret;
                        *val = ltr501_calculate_lux(le16_to_cpu(buf[1]),
@@ -705,13 +704,12 @@ static int ltr501_read_raw(struct iio_dev *indio_dev,
                        return -EINVAL;
                }
        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;
 
                ret = ltr501_read_info_raw(data, chan, val);
 
-               iio_device_release_direct_mode(indio_dev);
+               iio_device_release_direct(indio_dev);
                return ret;
 
        case IIO_CHAN_INFO_SCALE:
@@ -870,13 +868,12 @@ static int ltr501_write_raw(struct iio_dev *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;
 
        ret = __ltr501_write_raw(indio_dev, chan, val, val2, mask);
 
-       iio_device_release_direct_mode(indio_dev);
+       iio_device_release_direct(indio_dev);
 
        return ret;
 }