Message ID | 20250331121317.1694135-20-jic23@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | IIO: Sparse friendly claim of direct mode (the rest) | expand |
> From: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > This driver caused a false positive with __cond_lock() style solution > but is fine with the simple boolean return approach now used. > > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > Cc: Lorenzo Bianconi <lorenzo@kernel.org> Acked-by: Lorenzo Bianconi <lorenzo@kernel.org> > --- > drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 16 +++++++--------- > 1 file changed, 7 insertions(+), 9 deletions(-) > > diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c > index 4fdcc2acc94e..670cd217eb50 100644 > --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c > +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c > @@ -1804,12 +1804,11 @@ static int st_lsm6dsx_read_raw(struct iio_dev *iio_dev, > > switch (mask) { > case IIO_CHAN_INFO_RAW: > - ret = iio_device_claim_direct_mode(iio_dev); > - if (ret) > - break; > + if (!iio_device_claim_direct(iio_dev)) > + return -EBUSY; > > ret = st_lsm6dsx_read_oneshot(sensor, ch->address, val); > - iio_device_release_direct_mode(iio_dev); > + iio_device_release_direct(iio_dev); > break; > case IIO_CHAN_INFO_SAMP_FREQ: > *val = sensor->odr / 1000; > @@ -1834,11 +1833,10 @@ static int st_lsm6dsx_write_raw(struct iio_dev *iio_dev, > int val, int val2, long mask) > { > struct st_lsm6dsx_sensor *sensor = iio_priv(iio_dev); > - int err; > + int err = 0; > > - err = iio_device_claim_direct_mode(iio_dev); > - if (err) > - return err; > + if (!iio_device_claim_direct(iio_dev)) > + return -EBUSY; > > switch (mask) { > case IIO_CHAN_INFO_SCALE: > @@ -1860,7 +1858,7 @@ static int st_lsm6dsx_write_raw(struct iio_dev *iio_dev, > break; > } > > - iio_device_release_direct_mode(iio_dev); > + iio_device_release_direct(iio_dev); > > return err; > } > -- > 2.48.1 >
diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c index 4fdcc2acc94e..670cd217eb50 100644 --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c @@ -1804,12 +1804,11 @@ static int st_lsm6dsx_read_raw(struct iio_dev *iio_dev, switch (mask) { case IIO_CHAN_INFO_RAW: - ret = iio_device_claim_direct_mode(iio_dev); - if (ret) - break; + if (!iio_device_claim_direct(iio_dev)) + return -EBUSY; ret = st_lsm6dsx_read_oneshot(sensor, ch->address, val); - iio_device_release_direct_mode(iio_dev); + iio_device_release_direct(iio_dev); break; case IIO_CHAN_INFO_SAMP_FREQ: *val = sensor->odr / 1000; @@ -1834,11 +1833,10 @@ static int st_lsm6dsx_write_raw(struct iio_dev *iio_dev, int val, int val2, long mask) { struct st_lsm6dsx_sensor *sensor = iio_priv(iio_dev); - int err; + int err = 0; - err = iio_device_claim_direct_mode(iio_dev); - if (err) - return err; + if (!iio_device_claim_direct(iio_dev)) + return -EBUSY; switch (mask) { case IIO_CHAN_INFO_SCALE: @@ -1860,7 +1858,7 @@ static int st_lsm6dsx_write_raw(struct iio_dev *iio_dev, break; } - iio_device_release_direct_mode(iio_dev); + iio_device_release_direct(iio_dev); return err; }