aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/iio/industrialio-core.c6
-rw-r--r--include/linux/iio/types.h1
2 files changed, 7 insertions, 0 deletions
diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index 0499330d6e98..6eb24dbc081e 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -366,6 +366,7 @@ static ssize_t iio_read_channel_info(struct device *dev,
366{ 366{
367 struct iio_dev *indio_dev = dev_to_iio_dev(dev); 367 struct iio_dev *indio_dev = dev_to_iio_dev(dev);
368 struct iio_dev_attr *this_attr = to_iio_dev_attr(attr); 368 struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
369 unsigned long long tmp;
369 int val, val2; 370 int val, val2;
370 bool scale_db = false; 371 bool scale_db = false;
371 int ret = indio_dev->info->read_raw(indio_dev, this_attr->c, 372 int ret = indio_dev->info->read_raw(indio_dev, this_attr->c,
@@ -391,6 +392,11 @@ static ssize_t iio_read_channel_info(struct device *dev,
391 return sprintf(buf, "-%d.%09u\n", val, -val2); 392 return sprintf(buf, "-%d.%09u\n", val, -val2);
392 else 393 else
393 return sprintf(buf, "%d.%09u\n", val, val2); 394 return sprintf(buf, "%d.%09u\n", val, val2);
395 case IIO_VAL_FRACTIONAL:
396 tmp = div_s64((s64)val * 1000000000LL, val2);
397 val2 = do_div(tmp, 1000000000LL);
398 val = tmp;
399 return sprintf(buf, "%d.%09u\n", val, val2);
394 default: 400 default:
395 return 0; 401 return 0;
396 } 402 }
diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h
index 44e397705d7f..5c647ecfd5ba 100644
--- a/include/linux/iio/types.h
+++ b/include/linux/iio/types.h
@@ -57,5 +57,6 @@ enum iio_modifier {
57#define IIO_VAL_INT_PLUS_MICRO 2 57#define IIO_VAL_INT_PLUS_MICRO 2
58#define IIO_VAL_INT_PLUS_NANO 3 58#define IIO_VAL_INT_PLUS_NANO 3
59#define IIO_VAL_INT_PLUS_MICRO_DB 4 59#define IIO_VAL_INT_PLUS_MICRO_DB 4
60#define IIO_VAL_FRACTIONAL 10
60 61
61#endif /* _IIO_TYPES_H_ */ 62#endif /* _IIO_TYPES_H_ */