| From adfa969850ae93beca57f7527f0e4dc10cbe1309 Mon Sep 17 00:00:00 2001 |
| From: JM Friedt <jmfriedt@femto-st.fr> |
| Date: Fri, 19 Jun 2015 14:48:06 +0200 |
| Subject: iio: DAC: ad5624r_spi: fix bit shift of output data value |
| |
| From: JM Friedt <jmfriedt@femto-st.fr> |
| |
| commit adfa969850ae93beca57f7527f0e4dc10cbe1309 upstream. |
| |
| The value sent on the SPI bus is shifted by an erroneous number of bits. |
| The shift value was already computed in the iio_chan_spec structure and |
| hence subtracting this argument to 16 yields an erroneous data position |
| in the SPI stream. |
| |
| Signed-off-by: JM Friedt <jmfriedt@femto-st.fr> |
| Acked-by: Lars-Peter Clausen <lars@metafoo.de> |
| Signed-off-by: Jonathan Cameron <jic23@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/iio/dac/ad5624r_spi.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/iio/dac/ad5624r_spi.c |
| +++ b/drivers/iio/dac/ad5624r_spi.c |
| @@ -22,7 +22,7 @@ |
| #include "ad5624r.h" |
| |
| static int ad5624r_spi_write(struct spi_device *spi, |
| - u8 cmd, u8 addr, u16 val, u8 len) |
| + u8 cmd, u8 addr, u16 val, u8 shift) |
| { |
| u32 data; |
| u8 msg[3]; |
| @@ -35,7 +35,7 @@ static int ad5624r_spi_write(struct spi_ |
| * 14-, 12-bit input code followed by 0, 2, or 4 don't care bits, |
| * for the AD5664R, AD5644R, and AD5624R, respectively. |
| */ |
| - data = (0 << 22) | (cmd << 19) | (addr << 16) | (val << (16 - len)); |
| + data = (0 << 22) | (cmd << 19) | (addr << 16) | (val << shift); |
| msg[0] = data >> 16; |
| msg[1] = data >> 8; |
| msg[2] = data; |