Re: [PATCH] iio: dac: ad5446: return unshifted values in read_raw

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

 



On 30/08/16 07:27, Martin Hundebøll wrote:
> The Analog Devices DAC chips supported by the ad5456 driver ignore
> between 0 and 6 of the least significant bits, and thus the written raw
> value is shifted accordingly before being cached and written.
> 
> Since the shifted value is cached, it is returned to the user in
> ad5446_read_raw(), which might be confusing to the user (at least it was
> for me).
> 
> Instead store the unshifted value and do the shifting when needed (i.e.
> when writing data and disabling powerdown mode).
> 
> Signed-off-by: Martin Hundebøll <mnhu@xxxxxxxxx>
Lars?

Looks right to me, could you just sanity check this.
Stable material I think.

Jonathan
> ---
>  drivers/iio/dac/ad5446.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/iio/dac/ad5446.c b/drivers/iio/dac/ad5446.c
> index 46bb62a..8d172d7 100644
> --- a/drivers/iio/dac/ad5446.c
> +++ b/drivers/iio/dac/ad5446.c
> @@ -118,7 +118,7 @@ static ssize_t ad5446_write_dac_powerdown(struct iio_dev *indio_dev,
>  		shift = chan->scan_type.realbits + chan->scan_type.shift;
>  		val = st->pwr_down_mode << shift;
>  	} else {
> -		val = st->cached_val;
> +		val = st->cached_val << chan->scan_type.shift;
>  	}
>  
>  	ret = st->chip_info->write(st, val);
> @@ -195,9 +195,9 @@ static int ad5446_write_raw(struct iio_dev *indio_dev,
>  		if (val >= (1 << chan->scan_type.realbits) || val < 0)
>  			return -EINVAL;
>  
> -		val <<= chan->scan_type.shift;
>  		mutex_lock(&indio_dev->mlock);
>  		st->cached_val = val;
> +		val <<= chan->scan_type.shift;
>  		if (!st->pwr_down)
>  			ret = st->chip_info->write(st, val);
>  		mutex_unlock(&indio_dev->mlock);
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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