Message ID | 20240426200118.20900-1-gschwartz@usp.br (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | iio: adc: rtq6056: Use automated cleanup for mode handling in write_raw | expand |
Hi Gabriel, Nice patch! Reviewed-by: Marcelo Schmitt <marcelo.schmitt1@gmail.com> 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@usp.br> > --- > 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 > >
On Fri, 26 Apr 2024 17:01:14 -0300 Gabriel Schwartz <gschwartz@usp.br> 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@usp.br> +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] = {
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@usp.br> 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@usp.br> Hi, Patch looks good. Thanks. Reviewed-by: ChiYuan Huang <cy_huang@richtek.com> > +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] = { >
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] = {
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@usp.br> --- drivers/iio/adc/rtq6056.c | 34 +++++++++++----------------------- 1 file changed, 11 insertions(+), 23 deletions(-)