summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJM Friedt <jmfriedt@femto-st.fr>2015-06-19 14:48:06 +0200
committerSasha Levin <sasha.levin@oracle.com>2015-08-04 14:16:19 -0400
commitb217d7a8e1fcf13a010933d8b7ce34f0d197278c (patch)
tree0a4543a191fbe42de2a11a9932a6f0711a1ed1bc /drivers
parent908e65906a2e1f938f0972bbf7b058c6dd945628 (diff)
downloadlinux-stable-b217d7a8e1fcf13a010933d8b7ce34f0d197278c.tar.gz
linux-stable-b217d7a8e1fcf13a010933d8b7ce34f0d197278c.tar.bz2
linux-stable-b217d7a8e1fcf13a010933d8b7ce34f0d197278c.zip
iio: DAC: ad5624r_spi: fix bit shift of output data value
[ Upstream commit 09f4dcc9443c4731b6669066bd1bc4312ef17bcc ] 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> Cc: <Stable@vger.kernel.org> Signed-off-by: Jonathan Cameron <jic23@kernel.org> Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
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 61bb9d4239ea..e98428df0d44 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;