Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

iio: core: introduce dB scle: IIO_VAL_INT_PLUS_MICRO_DB

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Acked-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Michael Hennerich and committed by
Greg Kroah-Hartman
67eedba3 49b81a3c

+14 -6
+13 -6
drivers/iio/industrialio-core.c
··· 295 295 struct iio_dev *indio_dev = dev_get_drvdata(dev); 296 296 struct iio_dev_attr *this_attr = to_iio_dev_attr(attr); 297 297 int val, val2; 298 + bool scale_db = false; 298 299 int ret = indio_dev->info->read_raw(indio_dev, this_attr->c, 299 300 &val, &val2, this_attr->address); 300 301 301 302 if (ret < 0) 302 303 return ret; 303 304 304 - if (ret == IIO_VAL_INT) 305 + switch (ret) { 306 + case IIO_VAL_INT: 305 307 return sprintf(buf, "%d\n", val); 306 - else if (ret == IIO_VAL_INT_PLUS_MICRO) { 308 + case IIO_VAL_INT_PLUS_MICRO_DB: 309 + scale_db = true; 310 + case IIO_VAL_INT_PLUS_MICRO: 307 311 if (val2 < 0) 308 - return sprintf(buf, "-%d.%06u\n", val, -val2); 312 + return sprintf(buf, "-%d.%06u%s\n", val, -val2, 313 + scale_db ? " dB" : ""); 309 314 else 310 - return sprintf(buf, "%d.%06u\n", val, val2); 311 - } else if (ret == IIO_VAL_INT_PLUS_NANO) { 315 + return sprintf(buf, "%d.%06u%s\n", val, val2, 316 + scale_db ? " dB" : ""); 317 + case IIO_VAL_INT_PLUS_NANO: 312 318 if (val2 < 0) 313 319 return sprintf(buf, "-%d.%09u\n", val, -val2); 314 320 else 315 321 return sprintf(buf, "%d.%09u\n", val, val2); 316 - } else 322 + default: 317 323 return 0; 324 + } 318 325 } 319 326 320 327 static ssize_t iio_write_channel_info(struct device *dev,
+1
include/linux/iio/types.h
··· 50 50 #define IIO_VAL_INT 1 51 51 #define IIO_VAL_INT_PLUS_MICRO 2 52 52 #define IIO_VAL_INT_PLUS_NANO 3 53 + #define IIO_VAL_INT_PLUS_MICRO_DB 4 53 54 54 55 #endif /* _IIO_TYPES_H_ */