diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2011-10-19 11:47:49 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-10-19 16:57:00 -0400 |
commit | 021c0a381c5c1ae457bb9316669736d2ec66f972 (patch) | |
tree | e7849d7c6e4332c5f83354a5ba8bc8afa3b7a6a8 /drivers/staging/iio/dac | |
parent | 1b992320775691ba0124bd37c5fffe16172743cd (diff) |
staging:iio:dac:ad5791: Use correct DAC bit-size
Commit c5b99396 ("staging:iio:dac:ad5791 chan spec conversion.") introduced a
small bug, using storagebits instead of realbits throughout the driver, which
causes the driver to work incorrectly. This patch fixes it.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/iio/dac')
-rw-r--r-- | drivers/staging/iio/dac/ad5791.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/staging/iio/dac/ad5791.c b/drivers/staging/iio/dac/ad5791.c index fbf446d5671..9a76c4311f9 100644 --- a/drivers/staging/iio/dac/ad5791.c +++ b/drivers/staging/iio/dac/ad5791.c | |||
@@ -234,11 +234,11 @@ static int ad5791_read_raw(struct iio_dev *indio_dev, | |||
234 | return ret; | 234 | return ret; |
235 | *val &= AD5791_DAC_MASK; | 235 | *val &= AD5791_DAC_MASK; |
236 | *val >>= chan->scan_type.shift; | 236 | *val >>= chan->scan_type.shift; |
237 | *val -= (1 << (chan->scan_type.storagebits - 1)); | 237 | *val -= (1 << (chan->scan_type.realbits - 1)); |
238 | return IIO_VAL_INT; | 238 | return IIO_VAL_INT; |
239 | case (1 << IIO_CHAN_INFO_SCALE_SHARED): | 239 | case (1 << IIO_CHAN_INFO_SCALE_SHARED): |
240 | *val = 0; | 240 | *val = 0; |
241 | *val2 = (st->vref_mv * 1000) >> chan->scan_type.storagebits; | 241 | *val2 = (st->vref_mv * 1000) >> chan->scan_type.realbits; |
242 | return IIO_VAL_INT_PLUS_MICRO; | 242 | return IIO_VAL_INT_PLUS_MICRO; |
243 | default: | 243 | default: |
244 | return -EINVAL; | 244 | return -EINVAL; |
@@ -257,8 +257,8 @@ static int ad5791_write_raw(struct iio_dev *indio_dev, | |||
257 | 257 | ||
258 | switch (mask) { | 258 | switch (mask) { |
259 | case 0: | 259 | case 0: |
260 | val += (1 << (chan->scan_type.storagebits - 1)); | 260 | val += (1 << (chan->scan_type.realbits - 1)); |
261 | val &= AD5791_RES_MASK(chan->scan_type.storagebits); | 261 | val &= AD5791_RES_MASK(chan->scan_type.realbits); |
262 | val <<= chan->scan_type.shift; | 262 | val <<= chan->scan_type.shift; |
263 | 263 | ||
264 | return ad5791_spi_write(st->spi, chan->address, val); | 264 | return ad5791_spi_write(st->spi, chan->address, val); |