Commit 67eedba3 authored by Michael Hennerich's avatar Michael Hennerich Committed by Greg Kroah-Hartman

iio: core: introduce dB scle: IIO_VAL_INT_PLUS_MICRO_DB

Signed-off-by: default avatarMichael Hennerich <michael.hennerich@analog.com>
Acked-by: default avatarJonathan Cameron <jic23@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 49b81a3c
...@@ -295,26 +295,33 @@ static ssize_t iio_read_channel_info(struct device *dev, ...@@ -295,26 +295,33 @@ static ssize_t iio_read_channel_info(struct device *dev,
struct iio_dev *indio_dev = dev_get_drvdata(dev); struct iio_dev *indio_dev = dev_get_drvdata(dev);
struct iio_dev_attr *this_attr = to_iio_dev_attr(attr); struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
int val, val2; int val, val2;
bool scale_db = false;
int ret = indio_dev->info->read_raw(indio_dev, this_attr->c, int ret = indio_dev->info->read_raw(indio_dev, this_attr->c,
&val, &val2, this_attr->address); &val, &val2, this_attr->address);
if (ret < 0) if (ret < 0)
return ret; return ret;
if (ret == IIO_VAL_INT) switch (ret) {
case IIO_VAL_INT:
return sprintf(buf, "%d\n", val); return sprintf(buf, "%d\n", val);
else if (ret == IIO_VAL_INT_PLUS_MICRO) { case IIO_VAL_INT_PLUS_MICRO_DB:
scale_db = true;
case IIO_VAL_INT_PLUS_MICRO:
if (val2 < 0) if (val2 < 0)
return sprintf(buf, "-%d.%06u\n", val, -val2); return sprintf(buf, "-%d.%06u%s\n", val, -val2,
scale_db ? " dB" : "");
else else
return sprintf(buf, "%d.%06u\n", val, val2); return sprintf(buf, "%d.%06u%s\n", val, val2,
} else if (ret == IIO_VAL_INT_PLUS_NANO) { scale_db ? " dB" : "");
case IIO_VAL_INT_PLUS_NANO:
if (val2 < 0) if (val2 < 0)
return sprintf(buf, "-%d.%09u\n", val, -val2); return sprintf(buf, "-%d.%09u\n", val, -val2);
else else
return sprintf(buf, "%d.%09u\n", val, val2); return sprintf(buf, "%d.%09u\n", val, val2);
} else default:
return 0; return 0;
}
} }
static ssize_t iio_write_channel_info(struct device *dev, static ssize_t iio_write_channel_info(struct device *dev,
......
...@@ -50,5 +50,6 @@ enum iio_modifier { ...@@ -50,5 +50,6 @@ enum iio_modifier {
#define IIO_VAL_INT 1 #define IIO_VAL_INT 1
#define IIO_VAL_INT_PLUS_MICRO 2 #define IIO_VAL_INT_PLUS_MICRO 2
#define IIO_VAL_INT_PLUS_NANO 3 #define IIO_VAL_INT_PLUS_NANO 3
#define IIO_VAL_INT_PLUS_MICRO_DB 4
#endif /* _IIO_TYPES_H_ */ #endif /* _IIO_TYPES_H_ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment