[PATCH v4 8/8] iio: adc: stm32-dfsdm: add scaling support to dfsdm

Jonathan Cameron jic23 at kernel.org
Sun Jul 7 08:21:44 PDT 2024


On Thu, 4 Jul 2024 17:53:36 +0200
Olivier Moysan <olivier.moysan at foss.st.com> wrote:

> Add scaling support to STM32 DFSDM.
> 
> When used in an analog context, a DFSDM filter typically converts the data
> from a sigma delta modulator. The IIO device associated to the DFSDM
> filter provides these data as raw data.
> The IIO device can provide scaling information (voltage and offset) to
> allow conversion of raw data into physical values.
> 
> With the new binding based on IIO backend framework, the sigma delta
> modulators are defined as backends providing scaling information.
> 
> The scaling is not supported with legacy binding.
> 
> Signed-off-by: Olivier Moysan <olivier.moysan at foss.st.com>
> Acked-by: Nuno Sa <nuno.sa at analog.com>

One really minor thing inline.

Jonathan

> @@ -1278,7 +1308,14 @@ static int stm32_dfsdm_read_raw(struct iio_dev *indio_dev,
>  				int *val2, long mask)
>  {
>  	struct stm32_dfsdm_adc *adc = iio_priv(indio_dev);
> -	int ret;
> +
> +	struct stm32_dfsdm_filter *fl = &adc->dfsdm->fl_list[adc->fl_id];
> +	struct stm32_dfsdm_filter_osr *flo = &fl->flo[fl->fast];
> +	u32 max = flo->max << (flo->lshift - chan->scan_type.shift);
> +	int ret, idx = chan->scan_index;
Trivial but I've been grumping at others about this today so you get it too ;)
Don't mix declarations that include assignments with ones that don't.
It isn't good for general readability.
	int idx = chan->scan_index;
	int ret;

I'm not interested in patches to 'fix' this in other code, but nice to not
introduce more cases in new code.

> +
> +	if (flo->lshift < chan->scan_type.shift)
> +		max = flo->max >> (chan->scan_type.shift - flo->lshift);
>  
>  	switch (mask) {
>  	case IIO_CHAN_INFO_RAW:



More information about the linux-arm-kernel mailing list