diff mbox series

iio: dac: cio-dac: Fix max DAC write value check for 12-bit

Message ID 20230311002248.8548-1-william.gray@linaro.org (mailing list archive)
State Accepted
Headers show
Series iio: dac: cio-dac: Fix max DAC write value check for 12-bit | expand

Commit Message

William Breathitt Gray March 11, 2023, 12:22 a.m. UTC
The CIO-DAC series of devices only supports DAC values up to 12-bit
rather than 16-bit. Trying to write a 16-bit value results in only the
lower 12 bits affecting the DAC output which is not what the user
expects. Instead, adjust the DAC write value check to reject values
larger than 12-bit so that they fail explicitly as invalid for the user.

Fixes: 3b8df5fd526e ("iio: Add IIO support for the Measurement Computing CIO-DAC family")
Cc: stable@vger.kernel.org
Signed-off-by: William Breathitt Gray <william.gray@linaro.org>
---
 drivers/iio/dac/cio-dac.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)


base-commit: fe15c26ee26efa11741a7b632e9f23b01aca4cc6

Comments

Jonathan Cameron March 11, 2023, 12:35 p.m. UTC | #1
On Fri, 10 Mar 2023 19:22:48 -0500
William Breathitt Gray <william.gray@linaro.org> wrote:

> The CIO-DAC series of devices only supports DAC values up to 12-bit
> rather than 16-bit. Trying to write a 16-bit value results in only the
> lower 12 bits affecting the DAC output which is not what the user
> expects. Instead, adjust the DAC write value check to reject values
> larger than 12-bit so that they fail explicitly as invalid for the user.
> 
> Fixes: 3b8df5fd526e ("iio: Add IIO support for the Measurement Computing CIO-DAC family")
> Cc: stable@vger.kernel.org
> Signed-off-by: William Breathitt Gray <william.gray@linaro.org>
Applied to the fixes-togreg branch of iio.git.

Thanks,

Jonathan

> ---
>  drivers/iio/dac/cio-dac.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/iio/dac/cio-dac.c b/drivers/iio/dac/cio-dac.c
> index 791dd999cf29..18a64f72fc18 100644
> --- a/drivers/iio/dac/cio-dac.c
> +++ b/drivers/iio/dac/cio-dac.c
> @@ -66,8 +66,8 @@ static int cio_dac_write_raw(struct iio_dev *indio_dev,
>  	if (mask != IIO_CHAN_INFO_RAW)
>  		return -EINVAL;
>  
> -	/* DAC can only accept up to a 16-bit value */
> -	if ((unsigned int)val > 65535)
> +	/* DAC can only accept up to a 12-bit value */
> +	if ((unsigned int)val > 4095)
>  		return -EINVAL;
>  
>  	priv->chan_out_states[chan->channel] = val;
> 
> base-commit: fe15c26ee26efa11741a7b632e9f23b01aca4cc6
diff mbox series

Patch

diff --git a/drivers/iio/dac/cio-dac.c b/drivers/iio/dac/cio-dac.c
index 791dd999cf29..18a64f72fc18 100644
--- a/drivers/iio/dac/cio-dac.c
+++ b/drivers/iio/dac/cio-dac.c
@@ -66,8 +66,8 @@  static int cio_dac_write_raw(struct iio_dev *indio_dev,
 	if (mask != IIO_CHAN_INFO_RAW)
 		return -EINVAL;
 
-	/* DAC can only accept up to a 16-bit value */
-	if ((unsigned int)val > 65535)
+	/* DAC can only accept up to a 12-bit value */
+	if ((unsigned int)val > 4095)
 		return -EINVAL;
 
 	priv->chan_out_states[chan->channel] = val;