Re: [PATCH 33/40] iio: adc: ti_am335x_adc: Gather the checks on the delays

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

 



On Wed, 25 Aug 2021 17:25:11 +0200
Miquel Raynal <miquel.raynal@xxxxxxxxxxx> wrote:

> Move the checks over the delays provided in the device tree to the
> location where these values are read to clarify where they come from.
> 
> There are no functional changes besides the device structure used to
> display the warnings: let's use the ADC instead of the MFD device.
> 
> Signed-off-by: Miquel Raynal <miquel.raynal@xxxxxxxxxxx>
Acked-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>

> ---
>  drivers/iio/adc/ti_am335x_adc.c | 47 +++++++++++++++++++--------------
>  1 file changed, 27 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c
> index 00bbf557e86c..4eaf5b031707 100644
> --- a/drivers/iio/adc/ti_am335x_adc.c
> +++ b/drivers/iio/adc/ti_am335x_adc.c
> @@ -97,7 +97,6 @@ static u32 get_adc_step_bit(struct tiadc_device *adc_dev, int chan)
>  static void tiadc_step_config(struct iio_dev *indio_dev)
>  {
>  	struct tiadc_device *adc_dev = iio_priv(indio_dev);
> -	struct device *dev = adc_dev->mfd_tscadc->dev;
>  	unsigned int stepconfig;
>  	int i, steps = 0;
>  
> @@ -115,12 +114,6 @@ static void tiadc_step_config(struct iio_dev *indio_dev)
>  
>  		chan = adc_dev->channel_line[i];
>  
> -		if (adc_dev->step_avg[i] > STEPCONFIG_AVG_16) {
> -			dev_warn(dev, "chan %d step_avg truncating to %d\n",
> -				 chan, STEPCONFIG_AVG_16);
> -			adc_dev->step_avg[i] = STEPCONFIG_AVG_16;
> -		}
> -
>  		if (adc_dev->step_avg[i])
>  			stepconfig = STEPCONFIG_AVG(ffs(adc_dev->step_avg[i]) - 1) |
>  				     STEPCONFIG_FIFO1;
> @@ -135,18 +128,6 @@ static void tiadc_step_config(struct iio_dev *indio_dev)
>  			     STEPCONFIG_INM_ADCREFM | STEPCONFIG_RFP_VREFP |
>  			     STEPCONFIG_RFM_VREFN);
>  
> -		if (adc_dev->open_delay[i] > STEPDELAY_OPEN_MASK) {
> -			dev_warn(dev, "chan %d open delay truncating to 0x3FFFF\n",
> -				 chan);
> -			adc_dev->open_delay[i] = STEPDELAY_OPEN_MASK;
> -		}
> -
> -		if (adc_dev->sample_delay[i] > 0xFF) {
> -			dev_warn(dev, "chan %d sample delay truncating to 0xFF\n",
> -				 chan);
> -			adc_dev->sample_delay[i] = 0xFF;
> -		}
> -
>  		tiadc_writel(adc_dev, REG_STEPDELAY(steps),
>  			     STEPDELAY_OPEN(adc_dev->open_delay[i]) |
>  			     STEPDELAY_SAMPLE(adc_dev->sample_delay[i]));
> @@ -552,6 +533,7 @@ static int tiadc_parse_dt(struct platform_device *pdev,
>  	const __be32 *cur;
>  	int channels = 0;
>  	u32 val;
> +	int i;
>  
>  	of_property_for_each_u32(node, "ti,adc-channels", prop, cur, val) {
>  		adc_dev->channel_line[channels] = val;
> @@ -564,6 +546,8 @@ static int tiadc_parse_dt(struct platform_device *pdev,
>  		channels++;
>  	}
>  
> +	adc_dev->channels = channels;
> +
>  	of_property_read_u32_array(node, "ti,chan-step-avg",
>  				   adc_dev->step_avg, channels);
>  	of_property_read_u32_array(node, "ti,chan-step-opendelay",
> @@ -571,7 +555,30 @@ static int tiadc_parse_dt(struct platform_device *pdev,
>  	of_property_read_u32_array(node, "ti,chan-step-sampledelay",
>  				   adc_dev->sample_delay, channels);
>  
> -	adc_dev->channels = channels;
> +	for (i = 0; i < adc_dev->channels; i++) {
> +		int chan;
> +
> +		chan = adc_dev->channel_line[i];
> +
> +		if (adc_dev->step_avg[i] > STEPCONFIG_AVG_16) {
> +			dev_warn(&pdev->dev, "chan %d step_avg truncating to %d\n",
> +				 chan, STEPCONFIG_AVG_16);
> +			adc_dev->step_avg[i] = STEPCONFIG_AVG_16;
> +		}
> +
> +		if (adc_dev->open_delay[i] > STEPDELAY_OPEN_MASK) {
> +			dev_warn(&pdev->dev, "chan %d open delay truncating to 0x3FFFF\n",
> +				 chan);
> +			adc_dev->open_delay[i] = STEPDELAY_OPEN_MASK;
> +		}
> +
> +		if (adc_dev->sample_delay[i] > 0xFF) {
> +			dev_warn(&pdev->dev, "chan %d sample delay truncating to 0xFF\n",
> +				 chan);
> +			adc_dev->sample_delay[i] = 0xFF;
> +		}
> +	}
> +
>  	return 0;
>  }
>  




[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux