On Sun, Apr 28, 2024 at 12:51:29PM +0100, Jonathan Cameron wrote: > On Fri, 26 Apr 2024 17:01:14 -0300 > Gabriel Schwartz <gschwartz@xxxxxx> 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> Hi, Patch looks good. Thanks. Reviewed-by: ChiYuan Huang <cy_huang@xxxxxxxxxxx> > +CC driver author. This is a fairly recent driver, so like they are still > around. > > Patch looks good so I'll apply it but if ChiYuan Huang gives a review that would > be great. > > Thanks, > > Jonathan > > > > --- > > 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] = { >