On Wed, 22 Apr 2026 15:45:46 +0100
Rodrigo Alencar via B4 Relay <[email protected]> 
wrote:

> From: Rodrigo Alencar <[email protected]>
> 
> This patch fixes powerdown control issues by protecting the cached
> powerdown states with mutex access, and by using a proper bit shift for
> the powerdown mask values. During initialization, powerdown bits are
> initialized so that unused bits are set to 1 and the correct bit shift is
> used.
> 

Mostly avoiding repeating stuff Andy raised already.

> Dual-channel devices use one-hot encondig in the address and that reflects

encoding.

> on the position of the powerdown bits, which are not channel-index based
> for that case. Quad-channel devices also use one-hot encondig for the
> channel address but the result of log2(address) coincides with the channel
> index value.
> 
> Signed-off-by: Rodrigo Alencar <[email protected]>
>
>  static int ad5686_get_powerdown_mode(struct iio_dev *indio_dev,
>                                    const struct iio_chan_spec *chan)
>  {
>       struct ad5686_state *st = iio_priv(indio_dev);
> +     int mode, shift = ad5686_pd_mask_shift(chan);
Split that into two lines.  
        int shift = ...
        int mode;

Having a mixture of initialized and not is not good for readability.

>  
> -     return ((st->pwr_down_mode >> (chan->channel * 2)) & 0x3) - 1;
> +     mutex_lock(&st->lock);
> +     mode = ((st->pwr_down_mode >> shift) & 0x3) - 1;
> +     mutex_unlock(&st->lock);
> +
> +     return mode;
...


Reply via email to