diff options
-rw-r--r-- | drivers/iio/industrialio-core.c | 5 | ||||
-rw-r--r-- | drivers/iio/inkern.c | 3 | ||||
-rw-r--r-- | include/linux/iio/types.h | 1 |
3 files changed, 9 insertions, 0 deletions
diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c index 6eb24dbc081e..37650a72b31f 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c | |||
@@ -397,6 +397,11 @@ static ssize_t iio_read_channel_info(struct device *dev, | |||
397 | val2 = do_div(tmp, 1000000000LL); | 397 | val2 = do_div(tmp, 1000000000LL); |
398 | val = tmp; | 398 | val = tmp; |
399 | return sprintf(buf, "%d.%09u\n", val, val2); | 399 | return sprintf(buf, "%d.%09u\n", val, val2); |
400 | case IIO_VAL_FRACTIONAL_LOG2: | ||
401 | tmp = (s64)val * 1000000000LL >> val2; | ||
402 | val2 = do_div(tmp, 1000000000LL); | ||
403 | val = tmp; | ||
404 | return sprintf(buf, "%d.%09u\n", val, val2); | ||
400 | default: | 405 | default: |
401 | return 0; | 406 | return 0; |
402 | } | 407 | } |
diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c index 5230a33886c0..b394621d362c 100644 --- a/drivers/iio/inkern.c +++ b/drivers/iio/inkern.c | |||
@@ -314,6 +314,9 @@ static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan, | |||
314 | *processed = div_s64(raw64 * (s64)scale_val * scale, | 314 | *processed = div_s64(raw64 * (s64)scale_val * scale, |
315 | scale_val2); | 315 | scale_val2); |
316 | break; | 316 | break; |
317 | case IIO_VAL_FRACTIONAL_LOG2: | ||
318 | *processed = (raw64 * (s64)scale_val * scale) >> scale_val2; | ||
319 | break; | ||
317 | default: | 320 | default: |
318 | return -EINVAL; | 321 | return -EINVAL; |
319 | } | 322 | } |
diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h index 5c647ecfd5ba..87b196a2d698 100644 --- a/include/linux/iio/types.h +++ b/include/linux/iio/types.h | |||
@@ -58,5 +58,6 @@ enum iio_modifier { | |||
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 | #define IIO_VAL_FRACTIONAL 10 |
61 | #define IIO_VAL_FRACTIONAL_LOG2 11 | ||
61 | 62 | ||
62 | #endif /* _IIO_TYPES_H_ */ | 63 | #endif /* _IIO_TYPES_H_ */ |