summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorJM Friedt <jmfriedt@femto-st.fr>2015-06-19 14:48:06 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-08-03 09:29:53 -0700
commitf755f06a8b65d05eb608a243035febfc3134140b (patch)
tree28636a00258945d544c43dd9949af675db3df29e /drivers
parente1d34ce4a8c3ea7a84ff725fb597eac6831080f9 (diff)
downloadlwn-f755f06a8b65d05eb608a243035febfc3134140b.tar.gz
lwn-f755f06a8b65d05eb608a243035febfc3134140b.zip
iio: DAC: ad5624r_spi: fix bit shift of output data value
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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/iio/dac/ad5624r_spi.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/iio/dac/ad5624r_spi.c b/drivers/iio/dac/ad5624r_spi.c
index e8199cce2aea..1e666510c672 100644
--- 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_device *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;