Re: [PATCH v2] iio: ad7793: implement IIO_CHAN_INFO_SAMP_FREQ

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

 



On Thu, 2018-03-08 at 10:33 +0100, Michael Nosthoff wrote:
> This commit is a follow-up to changes made to ad_sigma_delta.h
> in staging: iio: ad7192: implement IIO_CHAN_INFO_SAMP_FREQ
> which broke ad7793 as it was not altered to match those changes.
> 
> This driver predates the availability of IIO_CHAN_INFO_SAMP_FREQ
> attribute wherein usage has some advantages like it can be accessed by
> in-kernel consumers as well as reduces the code size.
> 
> Therefore, use IIO_CHAN_INFO_SAMP_FREQ to implement the
> sampling_frequency attribute instead of using IIO_DEV_ATTR_SAMP_FREQ()
> macro.
> 
> Move code from the functions associated with IIO_DEV_ATTR_SAMP_FREQ()
> into respective read and write hooks with the mask set to
> IIO_CHAN_INFO_SAMP_FREQ.
> 
> Fixes: a13e831fcaa7 ("staging: iio: ad7192: implement 
> IIO_CHAN_INFO_SAMP_FREQ")

Hey,

Thanks for the effort in finding and fixing this :)

Can you recreate and resend the patch ?
It seems to be malformed ; lines look wrapped.
See example inline.

I'm suspecting you did not use `git send-mail`.
Can you resend it with `git send-email`.


Thanks
Alex

> 
> Signed-off-by: Michael Nosthoff <committed@xxxxxxxx>
> ---
> Changes in v2:
> 
>    - Added Fixes Tag
>    - Removed unnecessary ret=0 statement
> 
>   drivers/iio/adc/ad7793.c | 73 
> +++++++++++++++---------------------------------
>   1 file changed, 22 insertions(+), 51 deletions(-)
> 
> diff --git a/drivers/iio/adc/ad7793.c b/drivers/iio/adc/ad7793.c
> index 47c3d7f..fa31a36 100644
> --- a/drivers/iio/adc/ad7793.c
> +++ b/drivers/iio/adc/ad7793.c
> @@ -348,55 +348,6 @@ static const u16 ad7793_sample_freq_avail[16] = {0, 
> 470, 242, 123, 62, 50, 39,

Example: this line seems to have been wrapped by an editor ; so is the next one;

>   static const u16 ad7797_sample_freq_avail[16] = {0, 0, 0, 123, 62, 50, 
> 0,
>   					33, 0, 17, 16, 12, 10, 8, 6, 4};
> 
> -static ssize_t ad7793_read_frequency(struct device *dev,
> -		struct device_attribute *attr,
> -		char *buf)
> -{
> -	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
> -	struct ad7793_state *st = iio_priv(indio_dev);
> -
> -	return sprintf(buf, "%d\n",
> -	       st->chip_info->sample_freq_avail[AD7793_MODE_RATE(st->mode)]);
> -}
> -
> -static ssize_t ad7793_write_frequency(struct device *dev,
> -		struct device_attribute *attr,
> -		const char *buf,
> -		size_t len)
> -{
> -	struct iio_dev *indio_dev = dev_to_iio_dev(dev);
> -	struct ad7793_state *st = iio_priv(indio_dev);
> -	long lval;
> -	int i, ret;
> -
> -	ret = kstrtol(buf, 10, &lval);
> -	if (ret)
> -		return ret;
> -
> -	if (lval == 0)
> -		return -EINVAL;
> -
> -	for (i = 0; i < 16; i++)
> -		if (lval == st->chip_info->sample_freq_avail[i])
> -			break;
> -	if (i == 16)
> -		return -EINVAL;
> -
> -	ret = iio_device_claim_direct_mode(indio_dev);
> -	if (ret)
> -		return ret;
> -	st->mode &= ~AD7793_MODE_RATE(-1);
> -	st->mode |= AD7793_MODE_RATE(i);
> -	ad_sd_write_reg(&st->sd, AD7793_REG_MODE, sizeof(st->mode), st->mode);
> -	iio_device_release_direct_mode(indio_dev);
> -
> -	return len;
> -}
> -
> -static IIO_DEV_ATTR_SAMP_FREQ(S_IWUSR | S_IRUGO,
> -		ad7793_read_frequency,
> -		ad7793_write_frequency);
> -
>   static IIO_CONST_ATTR_SAMP_FREQ_AVAIL(
>   	"470 242 123 62 50 39 33 19 17 16 12 10 8 6 4");
> 
> @@ -424,7 +375,6 @@ static 
> IIO_DEVICE_ATTR_NAMED(in_m_in_scale_available,
>   		ad7793_show_scale_available, NULL, 0);
> 
>   static struct attribute *ad7793_attributes[] = {
> -	&iio_dev_attr_sampling_frequency.dev_attr.attr,
>   	&iio_const_attr_sampling_frequency_available.dev_attr.attr,
>   	&iio_dev_attr_in_m_in_scale_available.dev_attr.attr,
>   	NULL
> @@ -435,7 +385,6 @@ static const struct attribute_group 
> ad7793_attribute_group = {
>   };
> 
>   static struct attribute *ad7797_attributes[] = {
> -	&iio_dev_attr_sampling_frequency.dev_attr.attr,
>   	&iio_const_attr_sampling_frequency_available_ad7797.dev_attr.attr,
>   	NULL
>   };
> @@ -505,6 +454,9 @@ static int ad7793_read_raw(struct iio_dev 
> *indio_dev,
>   			*val -= offset;
>   		}
>   		return IIO_VAL_INT;
> +	case IIO_CHAN_INFO_SAMP_FREQ:
> +		*val = st->chip_info->sample_freq_avail[AD7793_MODE_RATE(st->mode)];
> +		return IIO_VAL_INT;
>   	}
>   	return -EINVAL;
>   }
> @@ -542,6 +494,25 @@ static int ad7793_write_raw(struct iio_dev 
> *indio_dev,
>   				break;
>   			}
>   		break;
> +	case IIO_CHAN_INFO_SAMP_FREQ:
> +		if (!val) {
> +			ret = -EINVAL;
> +			break;
> +		}
> +
> +		for (i = 0; i < 16; i++)
> +			if (val == st->chip_info->sample_freq_avail[i])
> +				break;
> +
> +		if (i == 16) {
> +			ret = -EINVAL;
> +			break;
> +		}
> +
> +		st->mode &= ~AD7793_MODE_RATE(-1);
> +		st->mode |= AD7793_MODE_RATE(i);
> +		ad_sd_write_reg(&st->sd, AD7793_REG_MODE, sizeof(st->mode), 
> st->mode);
> +		break;
>   	default:
>   		ret = -EINVAL;
>   	}��.n��������+%������w��{.n�����{��(��)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥




[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