Hi Gabriel, Nice patch! Reviewed-by: Marcelo Schmitt <marcelo.schmitt1@xxxxxxxxx> On 04/26, Gabriel Schwartz wrote: > Using iio_device_claim_direct_scoped() to automate mode claim and release > simplifies code flow and allows for straight-forward error handling with > direct returns on errors. > > Signed-off-by: Gabriel Schwartz <gschwartz@xxxxxx> > --- > drivers/iio/adc/rtq6056.c | 34 +++++++++++----------------------- > 1 file changed, 11 insertions(+), 23 deletions(-) > > diff --git a/drivers/iio/adc/rtq6056.c b/drivers/iio/adc/rtq6056.c > index a5464737e..bcb129840 100644 > --- a/drivers/iio/adc/rtq6056.c > +++ b/drivers/iio/adc/rtq6056.c > @@ -520,32 +520,20 @@ static int rtq6056_adc_write_raw(struct iio_dev *indio_dev, > { > struct rtq6056_priv *priv = iio_priv(indio_dev); > const struct richtek_dev_data *devdata = priv->devdata; > - int ret; > > - ret = iio_device_claim_direct_mode(indio_dev); > - if (ret) > - return ret; > - > - switch (mask) { > - case IIO_CHAN_INFO_SAMP_FREQ: > - if (devdata->fixed_samp_freq) { > - ret = -EINVAL; > - break; > + iio_device_claim_direct_scoped(return -EBUSY, indio_dev) { > + switch (mask) { > + case IIO_CHAN_INFO_SAMP_FREQ: > + if (devdata->fixed_samp_freq) > + return -EINVAL; > + return rtq6056_adc_set_samp_freq(priv, chan, val); > + case IIO_CHAN_INFO_OVERSAMPLING_RATIO: > + return devdata->set_average(priv, val); > + default: > + return -EINVAL; > } > - > - ret = rtq6056_adc_set_samp_freq(priv, chan, val); > - break; > - case IIO_CHAN_INFO_OVERSAMPLING_RATIO: > - ret = devdata->set_average(priv, val); > - break; > - default: > - ret = -EINVAL; > - break; > } > - > - iio_device_release_direct_mode(indio_dev); > - > - return ret; > + unreachable(); > } > > static const char *rtq6056_channel_labels[RTQ6056_MAX_CHANNEL] = { > -- > 2.44.0 > >