Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

iio: Factor IIO value formating into its own function

parent 11cb454f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -35,6 +35,8 @@ int __iio_add_chan_devattr(const char *postfix,
			   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 */
#define IIO_BUSY_BIT_POS 1

+26 −12
Original line number Diff line number Diff line
@@ -363,22 +363,20 @@ ssize_t iio_enum_write(struct iio_dev *indio_dev,
}
EXPORT_SYMBOL_GPL(iio_enum_write);

static ssize_t iio_read_channel_info(struct device *dev,
				     struct device_attribute *attr,
				     char *buf)
/**
 * iio_format_value() - Formats a IIO value into its string representation
 * @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;
	int val, val2;
	bool scale_db = false;
	int ret = indio_dev->info->read_raw(indio_dev, this_attr->c,
					    &val, &val2, this_attr->address);

	if (ret < 0)
		return ret;

	switch (ret) {
	switch (type) {
	case IIO_VAL_INT:
		return sprintf(buf, "%d\n", val);
	case IIO_VAL_INT_PLUS_MICRO_DB:
@@ -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
 * @str: The string to parse