diff mbox series

[v2] staging: iio: adc: ad7280a: do not pass the copy of struct element

Message ID 20181106214308.10619-1-sst@poczta.fm (mailing list archive)
State New, archived
Headers show
Series [v2] staging: iio: adc: ad7280a: do not pass the copy of struct element | expand

Commit Message

Slawomir Stepien Nov. 6, 2018, 9:43 p.m. UTC
There is no need to pass this parameter since is always a copy of
parameter that is available via st pointer.

Signed-off-by: Slawomir Stepien <sst@poczta.fm>
---
Note: this has been rebased on kernel/git/jic23/iio.git testing branch. I hope
      that's OK!

Changes since v1:
* Change my email address
---
 drivers/staging/iio/adc/ad7280a.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

Comments

Alexandru Ardelean Nov. 7, 2018, 10:16 a.m. UTC | #1
On Tue, 2018-11-06 at 22:43 +0100, Slawomir Stepien wrote:
> There is no need to pass this parameter since is always a copy of
> parameter that is available via st pointer.
> 

Hey,

Comments inline.

Thanks
Alex

> Signed-off-by: Slawomir Stepien <sst@poczta.fm>
> ---
> Note: this has been rebased on kernel/git/jic23/iio.git testing branch. I
> hope
>       that's OK!
> 
> Changes since v1:
> * Change my email address
> ---
>  drivers/staging/iio/adc/ad7280a.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/staging/iio/adc/ad7280a.c
> b/drivers/staging/iio/adc/ad7280a.c
> index 89c2c2deca64..fc6237ddb460 100644
> --- a/drivers/staging/iio/adc/ad7280a.c
> +++ b/drivers/staging/iio/adc/ad7280a.c
> @@ -291,7 +291,7 @@ static int ad7280_read_channel(struct ad7280_state
> *st, unsigned int devaddr,
>  	return (tmp >> 11) & 0xFFF;
>  }
>  
> -static int ad7280_read_all_channels(struct ad7280_state *st, unsigned
> int cnt,
> +static int ad7280_read_all_channels(struct ad7280_state *st,
>  				    unsigned int *array)
>  {

[Generally speaking] When passing an array of elements to a function in C,
it's a good idea to also pass the count of elements, so that you know how
many elements to iterate over.
So, this code should be fine as-is.

I agree that the element count is stored on `st`, but having `cnt` as a
parameter on the ad7280_read_all_channels() function keeps it neatly
coupled with `array` and gives you the flexibility to read less than `cnt`
channels.

I don't feel this change (even though correct) is really worth the trouble,
since it doesn't really add much value to the existing code.


But if there are any opinions otherwise, I don't feel really strongly about
doing it one way (before this patch) or the other (with this patch).

>  	int i, ret;
> @@ -312,7 +312,7 @@ static int ad7280_read_all_channels(struct
> ad7280_state *st, unsigned int cnt,
>  
>  	ad7280_delay(st);
>  
> -	for (i = 0; i < cnt; i++) {
> +	for (i = 0; i < st->scan_cnt; i++) {
>  		ret = __ad7280_read32(st, &tmp);
>  		if (ret)
>  			return ret;
> @@ -687,7 +687,7 @@ static irqreturn_t ad7280_event_handler(int irq, void
> *private)
>  	if (!channels)
>  		return IRQ_HANDLED;
>  
> -	ret = ad7280_read_all_channels(st, st->scan_cnt, channels);
> +	ret = ad7280_read_all_channels(st, channels);
>  	if (ret < 0)
>  		goto out;
>  
> @@ -791,7 +791,7 @@ static int ad7280_read_raw(struct iio_dev *indio_dev,
>  	case IIO_CHAN_INFO_RAW:
>  		mutex_lock(&st->lock);
>  		if (chan->address == AD7280A_ALL_CELLS)
> -			ret = ad7280_read_all_channels(st, st->scan_cnt,
> NULL);
> +			ret = ad7280_read_all_channels(st, NULL);
>  		else
>  			ret = ad7280_read_channel(st, chan->address >> 8,
>  						  chan->address & 0xFF);
Slawomir Stepien Nov. 7, 2018, 10:39 p.m. UTC | #2
On lis 07, 2018 10:16, Ardelean, Alexandru wrote:
> On Tue, 2018-11-06 at 22:43 +0100, Slawomir Stepien wrote:
> > There is no need to pass this parameter since is always a copy of
> > parameter that is available via st pointer.
> > 
> 
> Hey,
> 
> Comments inline.
> 
> Thanks
> Alex
> 
> > Signed-off-by: Slawomir Stepien <sst@poczta.fm>
> > ---
> > Note: this has been rebased on kernel/git/jic23/iio.git testing branch. I
> > hope
> >       that's OK!
> > 
> > Changes since v1:
> > * Change my email address
> > ---
> >  drivers/staging/iio/adc/ad7280a.c | 8 ++++----
> >  1 file changed, 4 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/staging/iio/adc/ad7280a.c
> > b/drivers/staging/iio/adc/ad7280a.c
> > index 89c2c2deca64..fc6237ddb460 100644
> > --- a/drivers/staging/iio/adc/ad7280a.c
> > +++ b/drivers/staging/iio/adc/ad7280a.c
> > @@ -291,7 +291,7 @@ static int ad7280_read_channel(struct ad7280_state
> > *st, unsigned int devaddr,
> >  	return (tmp >> 11) & 0xFFF;
> >  }
> >  
> > -static int ad7280_read_all_channels(struct ad7280_state *st, unsigned
> > int cnt,
> > +static int ad7280_read_all_channels(struct ad7280_state *st,
> >  				    unsigned int *array)
> >  {
> 
> [Generally speaking] When passing an array of elements to a function in C,
> it's a good idea to also pass the count of elements, so that you know how
> many elements to iterate over.
> So, this code should be fine as-is.
> 
> I agree that the element count is stored on `st`, but having `cnt` as a
> parameter on the ad7280_read_all_channels() function keeps it neatly
> coupled with `array` and gives you the flexibility to read less than `cnt`
> channels.
> 
> I don't feel this change (even though correct) is really worth the trouble,
> since it doesn't really add much value to the existing code.

Yes. You are right here. It's not worth the trouble.
Thank you for this review Alex.

> But if there are any opinions otherwise, I don't feel really strongly about
> doing it one way (before this patch) or the other (with this patch).
> 
> >  	int i, ret;
> > @@ -312,7 +312,7 @@ static int ad7280_read_all_channels(struct
> > ad7280_state *st, unsigned int cnt,
> >  
> >  	ad7280_delay(st);
> >  
> > -	for (i = 0; i < cnt; i++) {
> > +	for (i = 0; i < st->scan_cnt; i++) {
> >  		ret = __ad7280_read32(st, &tmp);
> >  		if (ret)
> >  			return ret;
> > @@ -687,7 +687,7 @@ static irqreturn_t ad7280_event_handler(int irq, void
> > *private)
> >  	if (!channels)
> >  		return IRQ_HANDLED;
> >  
> > -	ret = ad7280_read_all_channels(st, st->scan_cnt, channels);
> > +	ret = ad7280_read_all_channels(st, channels);
> >  	if (ret < 0)
> >  		goto out;
> >  
> > @@ -791,7 +791,7 @@ static int ad7280_read_raw(struct iio_dev *indio_dev,
> >  	case IIO_CHAN_INFO_RAW:
> >  		mutex_lock(&st->lock);
> >  		if (chan->address == AD7280A_ALL_CELLS)
> > -			ret = ad7280_read_all_channels(st, st->scan_cnt,
> > NULL);
> > +			ret = ad7280_read_all_channels(st, NULL);
> >  		else
> >  			ret = ad7280_read_channel(st, chan->address >> 8,
> >  						  chan->address & 0xFF);
diff mbox series

Patch

diff --git a/drivers/staging/iio/adc/ad7280a.c b/drivers/staging/iio/adc/ad7280a.c
index 89c2c2deca64..fc6237ddb460 100644
--- a/drivers/staging/iio/adc/ad7280a.c
+++ b/drivers/staging/iio/adc/ad7280a.c
@@ -291,7 +291,7 @@  static int ad7280_read_channel(struct ad7280_state *st, unsigned int devaddr,
 	return (tmp >> 11) & 0xFFF;
 }
 
-static int ad7280_read_all_channels(struct ad7280_state *st, unsigned int cnt,
+static int ad7280_read_all_channels(struct ad7280_state *st,
 				    unsigned int *array)
 {
 	int i, ret;
@@ -312,7 +312,7 @@  static int ad7280_read_all_channels(struct ad7280_state *st, unsigned int cnt,
 
 	ad7280_delay(st);
 
-	for (i = 0; i < cnt; i++) {
+	for (i = 0; i < st->scan_cnt; i++) {
 		ret = __ad7280_read32(st, &tmp);
 		if (ret)
 			return ret;
@@ -687,7 +687,7 @@  static irqreturn_t ad7280_event_handler(int irq, void *private)
 	if (!channels)
 		return IRQ_HANDLED;
 
-	ret = ad7280_read_all_channels(st, st->scan_cnt, channels);
+	ret = ad7280_read_all_channels(st, channels);
 	if (ret < 0)
 		goto out;
 
@@ -791,7 +791,7 @@  static int ad7280_read_raw(struct iio_dev *indio_dev,
 	case IIO_CHAN_INFO_RAW:
 		mutex_lock(&st->lock);
 		if (chan->address == AD7280A_ALL_CELLS)
-			ret = ad7280_read_all_channels(st, st->scan_cnt, NULL);
+			ret = ad7280_read_all_channels(st, NULL);
 		else
 			ret = ad7280_read_channel(st, chan->address >> 8,
 						  chan->address & 0xFF);