Message ID | 20250217141630.897334-20-jic23@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | IIO: ADCs: Sparse friendly claim of direct mode | expand |
On Mon, 2025-02-17 at 14:16 +0000, Jonathan Cameron wrote: > From: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > 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. > > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > --- > Kept this one out of the 'simple' category as it is worth considering > factoring out the code when the claim on direct mode is held. I think > it isn't quite complex enough to make that useful but if others disagree > I can do so. > --- Fine by me: Reviewed-by: Nuno Sá <nuno.sa@analog.com> > drivers/iio/adc/ad799x.c | 14 ++++++-------- > 1 file changed, 6 insertions(+), 8 deletions(-) > > diff --git a/drivers/iio/adc/ad799x.c b/drivers/iio/adc/ad799x.c > index aa44b4e2542b..993f4651b73a 100644 > --- a/drivers/iio/adc/ad799x.c > +++ b/drivers/iio/adc/ad799x.c > @@ -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; > } >
diff --git a/drivers/iio/adc/ad799x.c b/drivers/iio/adc/ad799x.c index aa44b4e2542b..993f4651b73a 100644 --- a/drivers/iio/adc/ad799x.c +++ b/drivers/iio/adc/ad799x.c @@ -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; }