diff --git a/drivers/staging/iio/iio.h b/drivers/staging/iio/iio.h index 38f1425f46459221ade5dd42eae8e6625afd133a..78a0927c9fdfc421ff0e955393b73ffb0b9e9604 100644 --- a/drivers/staging/iio/iio.h +++ b/drivers/staging/iio/iio.h @@ -202,6 +202,7 @@ static inline s64 iio_get_time_ns(void) * call to iio_device_register. */ #define IIO_VAL_INT 1 #define IIO_VAL_INT_PLUS_MICRO 2 +#define IIO_VAL_INT_PLUS_NANO 3 /** * struct iio_info - constant information about device diff --git a/drivers/staging/iio/industrialio-core.c b/drivers/staging/iio/industrialio-core.c index 94d3bfaa061d8e3b0ee3002f0d85ce10bfbcda95..e5a7663613a7a66460a62470d694f5abc728780a 100644 --- a/drivers/staging/iio/industrialio-core.c +++ b/drivers/staging/iio/industrialio-core.c @@ -396,6 +396,11 @@ static ssize_t iio_read_channel_info(struct device *dev, return sprintf(buf, "-%d.%06u\n", val, -val2); else return sprintf(buf, "%d.%06u\n", val, val2); + } else if (ret == IIO_VAL_INT_PLUS_NANO) { + if (val2 < 0) + return sprintf(buf, "-%d.%09u\n", val, -val2); + else + return sprintf(buf, "%d.%09u\n", val, val2); } else return 0; }