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

Jonathan Cameron
2021-08-30T14:16:22Z

On Wed, 25 Aug 2021 17:25:11 +0200
Miquel Raynal <miquel.raynal@bootlin.com> 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@bootlin.com>
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

> ---
> 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;
> }
>