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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx>
> ---
> 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);




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux