* [PATCH] iio: adc: rtq6056: Use automated cleanup for mode handling in write_raw
@ 2024-04-26 20:01 Gabriel Schwartz
2024-04-27 11:35 ` Marcelo Schmitt
2024-04-28 11:51 ` Jonathan Cameron
0 siblings, 2 replies; 4+ messages in thread
From: Gabriel Schwartz @ 2024-04-26 20:01 UTC (permalink / raw)
To: jic23; +Cc: Gabriel Schwartz, linux-iio
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
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] iio: adc: rtq6056: Use automated cleanup for mode handling in write_raw
2024-04-26 20:01 [PATCH] iio: adc: rtq6056: Use automated cleanup for mode handling in write_raw Gabriel Schwartz
@ 2024-04-27 11:35 ` Marcelo Schmitt
2024-04-28 11:51 ` Jonathan Cameron
1 sibling, 0 replies; 4+ messages in thread
From: Marcelo Schmitt @ 2024-04-27 11:35 UTC (permalink / raw)
To: Gabriel Schwartz; +Cc: jic23, linux-iio
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
>
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] iio: adc: rtq6056: Use automated cleanup for mode handling in write_raw
2024-04-26 20:01 [PATCH] iio: adc: rtq6056: Use automated cleanup for mode handling in write_raw Gabriel Schwartz
2024-04-27 11:35 ` Marcelo Schmitt
@ 2024-04-28 11:51 ` Jonathan Cameron
2024-04-29 1:52 ` ChiYuan Huang
1 sibling, 1 reply; 4+ messages in thread
From: Jonathan Cameron @ 2024-04-28 11:51 UTC (permalink / raw)
To: Gabriel Schwartz; +Cc: linux-iio, ChiYuan Huang
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] = {
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] iio: adc: rtq6056: Use automated cleanup for mode handling in write_raw
2024-04-28 11:51 ` Jonathan Cameron
@ 2024-04-29 1:52 ` ChiYuan Huang
0 siblings, 0 replies; 4+ messages in thread
From: ChiYuan Huang @ 2024-04-29 1:52 UTC (permalink / raw)
To: Jonathan Cameron; +Cc: Gabriel Schwartz, linux-iio
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] = {
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-04-29 3:02 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-26 20:01 [PATCH] iio: adc: rtq6056: Use automated cleanup for mode handling in write_raw Gabriel Schwartz
2024-04-27 11:35 ` Marcelo Schmitt
2024-04-28 11:51 ` Jonathan Cameron
2024-04-29 1:52 ` ChiYuan Huang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.