From: <Claudiu.Beznea@microchip.com>
To: <jic23@kernel.org>
Cc: <Eugen.Hristev@microchip.com>, <lars@metafoo.de>,
<Nicolas.Ferre@microchip.com>, <alexandre.belloni@bootlin.com>,
<robh+dt@kernel.org>, <krzk+dt@kernel.org>,
<ludovic.desroches@atmel.com>, <linux-iio@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 07/16] iio: adc: at91-sama5d2_adc: simplify the code in at91_adc_read_info_raw()
Date: Tue, 14 Jun 2022 08:49:03 +0000 [thread overview]
Message-ID: <14fc4d7c-4ce7-e4ed-3e2e-400cbd16c071@microchip.com> (raw)
In-Reply-To: <20220611185403.3eaf9b65@jic23-huawei>
On 11.06.2022 20:54, Jonathan Cameron wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
> On Thu, 9 Jun 2022 11:32:04 +0300
> Claudiu Beznea <claudiu.beznea@microchip.com> wrote:
>
>> Simplify a bit the code in at91_adc_read_info_raw() by reducing the
>> number of lines of code.
>>
>> Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
>
> I'm not convinced this is worth while, but there are some lesser
> steps visible in this patch that probably are.
>
> Given your earlier reorg to move at01_adc_adjust_val_osr() under the locks,
> you can now move the locks to the caller, thus not needing to handle them
> separately in all the exit paths.
OK, I'll give it a try. With this, would you prefer to still keep this patch?
>
>> ---
>> drivers/iio/adc/at91-sama5d2_adc.c | 35 +++++++++---------------------
>> 1 file changed, 10 insertions(+), 25 deletions(-)
>>
>> diff --git a/drivers/iio/adc/at91-sama5d2_adc.c b/drivers/iio/adc/at91-sama5d2_adc.c
>> index b52f1020feaf..fbb98e216e70 100644
>> --- a/drivers/iio/adc/at91-sama5d2_adc.c
>> +++ b/drivers/iio/adc/at91-sama5d2_adc.c
>> @@ -1576,6 +1576,7 @@ static int at91_adc_read_info_raw(struct iio_dev *indio_dev,
>> struct iio_chan_spec const *chan, int *val)
>> {
>> struct at91_adc_state *st = iio_priv(indio_dev);
>> + int (*fn)(struct at91_adc_state *, int, u16 *) = NULL;
>> u16 tmp_val;
>> int ret;
>>
>> @@ -1583,29 +1584,18 @@ static int at91_adc_read_info_raw(struct iio_dev *indio_dev,
>> * Keep in mind that we cannot use software trigger or touchscreen
>> * if external trigger is enabled
>> */
>> - if (chan->type == IIO_POSITIONRELATIVE) {
>> - ret = iio_device_claim_direct_mode(indio_dev);
>> - if (ret)
>> - return ret;
>
> You can drop this out of the if statements as it happens in all paths.
> Or even better, move it to the caller..
>
>> - mutex_lock(&st->lock);
>> -
>> - ret = at91_adc_read_position(st, chan->channel,
>> - &tmp_val);
>
> huh? ret not checked?
Yep, this should have been missed...
>
>> - *val = tmp_val;
>> - ret = at91_adc_adjust_val_osr(st, val);
> Sure this is duplicated, but meh it's only a few lines.
>
>
>> - mutex_unlock(&st->lock);
>> - iio_device_release_direct_mode(indio_dev);
>
> this early release (compared to the long path) is the only bit really
> gets duplicated in all paths..
>
>> + if (chan->type == IIO_POSITIONRELATIVE)
>> + fn = at91_adc_read_position;
>> + if (chan->type == IIO_PRESSURE)
>> + fn = at91_adc_read_pressure;
>>
>> + ret = iio_device_claim_direct_mode(indio_dev);
>> + if (ret)
>> return ret;
>> - }
>> - if (chan->type == IIO_PRESSURE) {
> this should always have been an else if () as the chan->type couldn't be both.
>
>> - ret = iio_device_claim_direct_mode(indio_dev);
>> - if (ret)
>> - return ret;
>> - mutex_lock(&st->lock);
> hence this lot can be shared with the above.
To be sure of what I've understood correctly: in the end you prefer to have
a patch with the point you suggested rather then the initial patch?
Thank you,
Claudiu Beznea
>
>> + mutex_lock(&st->lock);
>>
>> - ret = at91_adc_read_pressure(st, chan->channel,
>> - &tmp_val);
>> + if (fn) {
>> + ret = fn(st, chan->channel, &tmp_val);
>> *val = tmp_val;
>> ret = at91_adc_adjust_val_osr(st, val);
>> mutex_unlock(&st->lock);
>> @@ -1616,11 +1606,6 @@ static int at91_adc_read_info_raw(struct iio_dev *indio_dev,
>>
>> /* in this case we have a voltage channel */
>>
>> - ret = iio_device_claim_direct_mode(indio_dev);
>> - if (ret)
>> - return ret;
>> - mutex_lock(&st->lock);
>> -
>> st->chan = chan;
>>
>> at91_adc_cor(st, chan);
>
WARNING: multiple messages have this Message-ID (diff)
From: <Claudiu.Beznea@microchip.com>
To: <jic23@kernel.org>
Cc: devicetree@vger.kernel.org, alexandre.belloni@bootlin.com,
lars@metafoo.de, ludovic.desroches@atmel.com,
linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org,
robh+dt@kernel.org, Eugen.Hristev@microchip.com,
krzk+dt@kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 07/16] iio: adc: at91-sama5d2_adc: simplify the code in at91_adc_read_info_raw()
Date: Tue, 14 Jun 2022 08:49:03 +0000 [thread overview]
Message-ID: <14fc4d7c-4ce7-e4ed-3e2e-400cbd16c071@microchip.com> (raw)
In-Reply-To: <20220611185403.3eaf9b65@jic23-huawei>
On 11.06.2022 20:54, Jonathan Cameron wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
> On Thu, 9 Jun 2022 11:32:04 +0300
> Claudiu Beznea <claudiu.beznea@microchip.com> wrote:
>
>> Simplify a bit the code in at91_adc_read_info_raw() by reducing the
>> number of lines of code.
>>
>> Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
>
> I'm not convinced this is worth while, but there are some lesser
> steps visible in this patch that probably are.
>
> Given your earlier reorg to move at01_adc_adjust_val_osr() under the locks,
> you can now move the locks to the caller, thus not needing to handle them
> separately in all the exit paths.
OK, I'll give it a try. With this, would you prefer to still keep this patch?
>
>> ---
>> drivers/iio/adc/at91-sama5d2_adc.c | 35 +++++++++---------------------
>> 1 file changed, 10 insertions(+), 25 deletions(-)
>>
>> diff --git a/drivers/iio/adc/at91-sama5d2_adc.c b/drivers/iio/adc/at91-sama5d2_adc.c
>> index b52f1020feaf..fbb98e216e70 100644
>> --- a/drivers/iio/adc/at91-sama5d2_adc.c
>> +++ b/drivers/iio/adc/at91-sama5d2_adc.c
>> @@ -1576,6 +1576,7 @@ static int at91_adc_read_info_raw(struct iio_dev *indio_dev,
>> struct iio_chan_spec const *chan, int *val)
>> {
>> struct at91_adc_state *st = iio_priv(indio_dev);
>> + int (*fn)(struct at91_adc_state *, int, u16 *) = NULL;
>> u16 tmp_val;
>> int ret;
>>
>> @@ -1583,29 +1584,18 @@ static int at91_adc_read_info_raw(struct iio_dev *indio_dev,
>> * Keep in mind that we cannot use software trigger or touchscreen
>> * if external trigger is enabled
>> */
>> - if (chan->type == IIO_POSITIONRELATIVE) {
>> - ret = iio_device_claim_direct_mode(indio_dev);
>> - if (ret)
>> - return ret;
>
> You can drop this out of the if statements as it happens in all paths.
> Or even better, move it to the caller..
>
>> - mutex_lock(&st->lock);
>> -
>> - ret = at91_adc_read_position(st, chan->channel,
>> - &tmp_val);
>
> huh? ret not checked?
Yep, this should have been missed...
>
>> - *val = tmp_val;
>> - ret = at91_adc_adjust_val_osr(st, val);
> Sure this is duplicated, but meh it's only a few lines.
>
>
>> - mutex_unlock(&st->lock);
>> - iio_device_release_direct_mode(indio_dev);
>
> this early release (compared to the long path) is the only bit really
> gets duplicated in all paths..
>
>> + if (chan->type == IIO_POSITIONRELATIVE)
>> + fn = at91_adc_read_position;
>> + if (chan->type == IIO_PRESSURE)
>> + fn = at91_adc_read_pressure;
>>
>> + ret = iio_device_claim_direct_mode(indio_dev);
>> + if (ret)
>> return ret;
>> - }
>> - if (chan->type == IIO_PRESSURE) {
> this should always have been an else if () as the chan->type couldn't be both.
>
>> - ret = iio_device_claim_direct_mode(indio_dev);
>> - if (ret)
>> - return ret;
>> - mutex_lock(&st->lock);
> hence this lot can be shared with the above.
To be sure of what I've understood correctly: in the end you prefer to have
a patch with the point you suggested rather then the initial patch?
Thank you,
Claudiu Beznea
>
>> + mutex_lock(&st->lock);
>>
>> - ret = at91_adc_read_pressure(st, chan->channel,
>> - &tmp_val);
>> + if (fn) {
>> + ret = fn(st, chan->channel, &tmp_val);
>> *val = tmp_val;
>> ret = at91_adc_adjust_val_osr(st, val);
>> mutex_unlock(&st->lock);
>> @@ -1616,11 +1606,6 @@ static int at91_adc_read_info_raw(struct iio_dev *indio_dev,
>>
>> /* in this case we have a voltage channel */
>>
>> - ret = iio_device_claim_direct_mode(indio_dev);
>> - if (ret)
>> - return ret;
>> - mutex_lock(&st->lock);
>> -
>> st->chan = chan;
>>
>> at91_adc_cor(st, chan);
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-06-14 8:50 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-09 8:31 [PATCH 00/16] iio: adc: at91-sama5d2_adc: add support for temperature sensor Claudiu Beznea
2022-06-09 8:31 ` Claudiu Beznea
2022-06-09 8:31 ` [PATCH 01/16] iio: adc: at91-sama5d2_adc: fix AT91_SAMA5D2_MR_TRACKTIM_MAX Claudiu Beznea
2022-06-09 8:31 ` Claudiu Beznea
2022-06-09 8:31 ` [PATCH 02/16] iio: adc: at91-sama5d2_adc: lock around oversampling and sample freq Claudiu Beznea
2022-06-09 8:31 ` Claudiu Beznea
2022-06-11 17:30 ` Jonathan Cameron
2022-06-11 17:30 ` Jonathan Cameron
2022-06-14 8:19 ` Claudiu.Beznea
2022-06-14 8:19 ` Claudiu.Beznea
2022-06-09 8:32 ` [PATCH 03/16] iio: adc: at91-sama5d2_adc: exit from write_raw() when buffers are enabled Claudiu Beznea
2022-06-09 8:32 ` Claudiu Beznea
2022-06-11 17:33 ` Jonathan Cameron
2022-06-11 17:33 ` Jonathan Cameron
2022-06-14 8:19 ` Claudiu.Beznea
2022-06-14 8:19 ` Claudiu.Beznea
2022-06-09 8:32 ` [PATCH 04/16] iio: adc: at91-sama5d2_adc: handle different EMR.OSR for different hw versions Claudiu Beznea
2022-06-09 8:32 ` Claudiu Beznea
2022-06-11 17:46 ` Jonathan Cameron
2022-06-11 17:46 ` Jonathan Cameron
2022-06-14 8:20 ` Claudiu.Beznea
2022-06-14 8:20 ` Claudiu.Beznea
2022-06-09 8:32 ` [PATCH 05/16] iio: adc: at91-sama5d2_adc: adjust osr based on specific platform data Claudiu Beznea
2022-06-09 8:32 ` Claudiu Beznea
2022-06-09 8:32 ` [PATCH 06/16] iio: adc: at91-sama5d2_adc: add 64 and 256 oversampling ratio Claudiu Beznea
2022-06-09 8:32 ` Claudiu Beznea
2022-06-11 17:47 ` Jonathan Cameron
2022-06-11 17:47 ` Jonathan Cameron
2022-06-14 8:22 ` Claudiu.Beznea
2022-06-14 8:22 ` Claudiu.Beznea
2022-06-09 8:32 ` [PATCH 07/16] iio: adc: at91-sama5d2_adc: simplify the code in at91_adc_read_info_raw() Claudiu Beznea
2022-06-09 8:32 ` Claudiu Beznea
2022-06-11 17:54 ` Jonathan Cameron
2022-06-11 17:54 ` Jonathan Cameron
2022-06-14 8:49 ` Claudiu.Beznea [this message]
2022-06-14 8:49 ` Claudiu.Beznea
2022-06-14 12:00 ` Jonathan Cameron
2022-06-14 12:00 ` Jonathan Cameron
2022-06-09 8:32 ` [PATCH 08/16] iio: adc: at91-sama5d2_adc: move oversampling storage in its function Claudiu Beznea
2022-06-09 8:32 ` Claudiu Beznea
2022-06-09 8:32 ` [PATCH 09/16] iio: adc: at91-sama5d2_adc: update trackx on emr Claudiu Beznea
2022-06-09 8:32 ` Claudiu Beznea
2022-06-09 8:32 ` [PATCH 10/16] iio: adc: at91-sama5d2_adc: add startup and tracktim as parameter for at91_adc_setup_samp_freq() Claudiu Beznea
2022-06-09 8:32 ` Claudiu Beznea
2022-06-09 8:32 ` [PATCH 11/16] iio: adc: at91-sama5d2_adc: add locking parameter to at91_adc_read_info_raw() Claudiu Beznea
2022-06-09 8:32 ` Claudiu Beznea
2022-06-11 17:58 ` Jonathan Cameron
2022-06-11 17:58 ` Jonathan Cameron
2022-06-14 8:50 ` Claudiu.Beznea
2022-06-14 8:50 ` Claudiu.Beznea
2022-06-14 12:02 ` Jonathan Cameron
2022-06-14 12:02 ` Jonathan Cameron
2022-06-09 8:32 ` [PATCH 12/16] dt-bindings: iio: adc: at91-sama5d2_adc: add id for temperature channel Claudiu Beznea
2022-06-09 8:32 ` Claudiu Beznea
2022-06-16 16:00 ` Rob Herring
2022-06-16 16:00 ` Rob Herring
2022-06-09 8:32 ` [PATCH 13/16] iio: adc: at91-sama5d2_adc: add support for temperature sensor Claudiu Beznea
2022-06-09 8:32 ` Claudiu Beznea
2022-06-11 18:15 ` Jonathan Cameron
2022-06-11 18:15 ` Jonathan Cameron
2022-06-14 10:13 ` Claudiu.Beznea
2022-06-14 10:13 ` Claudiu.Beznea
2022-06-14 12:10 ` Jonathan Cameron
2022-06-14 12:10 ` Jonathan Cameron
2022-06-09 8:32 ` [PATCH 14/16] iio: adc: at91-sama5d2_adc: add empty line after functions Claudiu Beznea
2022-06-09 8:32 ` Claudiu Beznea
2022-06-09 8:32 ` [PATCH 15/16] iio: adc: at91-sama5d2_adc: add runtime pm support Claudiu Beznea
2022-06-09 8:32 ` Claudiu Beznea
2022-06-11 16:48 ` Jonathan Cameron
2022-06-11 16:48 ` Jonathan Cameron
2022-06-14 10:40 ` Claudiu.Beznea
2022-06-14 10:40 ` Claudiu.Beznea
2022-06-14 12:14 ` Jonathan Cameron
2022-06-14 12:14 ` Jonathan Cameron
2022-06-09 8:32 ` [PATCH 16/16] iio: adc: at91-sama5d2_adc: use pm_ptr() Claudiu Beznea
2022-06-09 8:32 ` Claudiu Beznea
2022-06-11 16:40 ` Jonathan Cameron
2022-06-11 16:40 ` Jonathan Cameron
2022-06-11 18:16 ` [PATCH 00/16] iio: adc: at91-sama5d2_adc: add support for temperature sensor Jonathan Cameron
2022-06-11 18:16 ` Jonathan Cameron
2022-06-14 10:41 ` Claudiu.Beznea
2022-06-14 10:41 ` Claudiu.Beznea
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=14fc4d7c-4ce7-e4ed-3e2e-400cbd16c071@microchip.com \
--to=claudiu.beznea@microchip.com \
--cc=Eugen.Hristev@microchip.com \
--cc=Nicolas.Ferre@microchip.com \
--cc=alexandre.belloni@bootlin.com \
--cc=devicetree@vger.kernel.org \
--cc=jic23@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=lars@metafoo.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ludovic.desroches@atmel.com \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.