aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2014-09-25 10:27:14 -0400
committerJonathan Cameron <jic23@kernel.org>2015-01-05 13:59:58 -0500
commit9251d14a275878879400eefae7601c3ee7ee9d71 (patch)
tree3ef57a09813becbf4e974882c0e1cffea504d72f
parent66ad1fd025c7cb9d0d4d01de965c80871226f422 (diff)
staging:iio:ad5933: Report temperature as raw value
We shouldn't be doing the unit conversion in kernel space. Just report the raw value for the property and the scale. Userspace can do the conversion if necessary. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
-rw-r--r--drivers/staging/iio/impedance-analyzer/ad5933.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/staging/iio/impedance-analyzer/ad5933.c b/drivers/staging/iio/impedance-analyzer/ad5933.c
index 39f60aca0838..d18a8ecc1245 100644
--- a/drivers/staging/iio/impedance-analyzer/ad5933.c
+++ b/drivers/staging/iio/impedance-analyzer/ad5933.c
@@ -113,7 +113,8 @@ static const struct iio_chan_spec ad5933_channels[] = {
113 .type = IIO_TEMP, 113 .type = IIO_TEMP,
114 .indexed = 1, 114 .indexed = 1,
115 .channel = 0, 115 .channel = 0,
116 .info_mask_separate = BIT(IIO_CHAN_INFO_PROCESSED), 116 .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) |
117 BIT(IIO_CHAN_INFO_SCALE),
117 .address = AD5933_REG_TEMP_DATA, 118 .address = AD5933_REG_TEMP_DATA,
118 .scan_index = -1, 119 .scan_index = -1,
119 .scan_type = { 120 .scan_type = {
@@ -520,12 +521,11 @@ static int ad5933_read_raw(struct iio_dev *indio_dev,
520{ 521{
521 struct ad5933_state *st = iio_priv(indio_dev); 522 struct ad5933_state *st = iio_priv(indio_dev);
522 __be16 dat; 523 __be16 dat;
523 int ret = -EINVAL; 524 int ret;
524 525
525 mutex_lock(&indio_dev->mlock);
526 switch (m) { 526 switch (m) {
527 case IIO_CHAN_INFO_RAW: 527 case IIO_CHAN_INFO_RAW:
528 case IIO_CHAN_INFO_PROCESSED: 528 mutex_lock(&indio_dev->mlock);
529 if (iio_buffer_enabled(indio_dev)) { 529 if (iio_buffer_enabled(indio_dev)) {
530 ret = -EBUSY; 530 ret = -EBUSY;
531 goto out; 531 goto out;
@@ -543,16 +543,16 @@ static int ad5933_read_raw(struct iio_dev *indio_dev,
543 if (ret < 0) 543 if (ret < 0)
544 goto out; 544 goto out;
545 mutex_unlock(&indio_dev->mlock); 545 mutex_unlock(&indio_dev->mlock);
546 ret = be16_to_cpu(dat); 546 *val = sign_extend32(be16_to_cpu(dat), 13);
547 /* Temp in Milli degrees Celsius */
548 if (ret < 8192)
549 *val = ret * 1000 / 32;
550 else
551 *val = (ret - 16384) * 1000 / 32;
552 547
553 return IIO_VAL_INT; 548 return IIO_VAL_INT;
549 case IIO_CHAN_INFO_SCALE:
550 *val = 1000;
551 *val2 = 5;
552 return IIO_VAL_FRACTIONAL_LOG2;
554 } 553 }
555 554
555 return -EINVAL;
556out: 556out:
557 mutex_unlock(&indio_dev->mlock); 557 mutex_unlock(&indio_dev->mlock);
558 return ret; 558 return ret;