staging: iio: adt7316: fix the dac write calculation
authorJeremy Fertic <jeremyfertic@gmail.com>
Sun, 23 Dec 2018 04:57:43 +0000 (21:57 -0700)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 5 Jan 2019 17:57:06 +0000 (17:57 +0000)
commit78accaea117c1ae878774974fab91ac4a0b0e2b0
treec36e58fd9fe151f8e03a299c5991254ed95e3097
parent45130fb030aec26ac28b4bb23344901df3ec3b7f
staging: iio: adt7316: fix the dac write calculation

The lsb calculation is not masking the correct bits from the user input.
Subtract 1 from (1 << offset) to correctly set up the mask to be applied
to user input.

The lsb register stores its value starting at the bit 7 position.
adt7316_store_DAC() currently assumes the value is at the other end of the
register. Shift the lsb value before storing it in a new variable lsb_reg,
and write this variable to the lsb register.

Fixes: 35f6b6b86ede ("staging: iio: new ADT7316/7/8 and ADT7516/7/9 driver")
Signed-off-by: Jeremy Fertic <jeremyfertic@gmail.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/staging/iio/addac/adt7316.c