Commit 3661f3f5 authored by Lars-Peter Clausen's avatar Lars-Peter Clausen Committed by Jonathan Cameron

iio: Factor IIO value formating into its own function

Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent 11cb454f
...@@ -35,6 +35,8 @@ int __iio_add_chan_devattr(const char *postfix, ...@@ -35,6 +35,8 @@ int __iio_add_chan_devattr(const char *postfix,
struct list_head *attr_list); struct list_head *attr_list);
void iio_free_chan_devattr_list(struct list_head *attr_list); void iio_free_chan_devattr_list(struct list_head *attr_list);
ssize_t iio_format_value(char *buf, unsigned int type, int val, int val2);
/* Event interface flags */ /* Event interface flags */
#define IIO_BUSY_BIT_POS 1 #define IIO_BUSY_BIT_POS 1
......
...@@ -363,22 +363,20 @@ ssize_t iio_enum_write(struct iio_dev *indio_dev, ...@@ -363,22 +363,20 @@ ssize_t iio_enum_write(struct iio_dev *indio_dev,
} }
EXPORT_SYMBOL_GPL(iio_enum_write); EXPORT_SYMBOL_GPL(iio_enum_write);
static ssize_t iio_read_channel_info(struct device *dev, /**
struct device_attribute *attr, * iio_format_value() - Formats a IIO value into its string representation
char *buf) * @buf: The buffer to which the formated value gets written
* @type: One of the IIO_VAL_... constants. This decides how the val and val2
* parameters are formatted.
* @val: First part of the value, exact meaning depends on the type parameter.
* @val2: Second part of the value, exact meaning depends on the type parameter.
*/
ssize_t iio_format_value(char *buf, unsigned int type, int val, int val2)
{ {
struct iio_dev *indio_dev = dev_to_iio_dev(dev);
struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
unsigned long long tmp; unsigned long long tmp;
int val, val2;
bool scale_db = false; bool scale_db = false;
int ret = indio_dev->info->read_raw(indio_dev, this_attr->c,
&val, &val2, this_attr->address);
if (ret < 0) switch (type) {
return ret;
switch (ret) {
case IIO_VAL_INT: case IIO_VAL_INT:
return sprintf(buf, "%d\n", val); return sprintf(buf, "%d\n", val);
case IIO_VAL_INT_PLUS_MICRO_DB: case IIO_VAL_INT_PLUS_MICRO_DB:
...@@ -410,6 +408,22 @@ static ssize_t iio_read_channel_info(struct device *dev, ...@@ -410,6 +408,22 @@ static ssize_t iio_read_channel_info(struct device *dev,
} }
} }
static ssize_t iio_read_channel_info(struct device *dev,
struct device_attribute *attr,
char *buf)
{
struct iio_dev *indio_dev = dev_to_iio_dev(dev);
struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
int val, val2;
int ret = indio_dev->info->read_raw(indio_dev, this_attr->c,
&val, &val2, this_attr->address);
if (ret < 0)
return ret;
return iio_format_value(buf, ret, val, val2);
}
/** /**
* iio_str_to_fixpoint() - Parse a fixed-point number from a string * iio_str_to_fixpoint() - Parse a fixed-point number from a string
* @str: The string to parse * @str: The string to parse
......
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