Commit 52c1e818 authored by Sean Anderson's avatar Sean Anderson Committed by Guenter Roeck
Browse files

hwmon: iio: Use iio_read_channel_processed_scale for IIO_POWER



Instead of rescaling power channels after the fact, use the dedicated
scaling API. This should reduce any inaccuracies resulting from the
scaling.

Signed-off-by: default avatarSean Anderson <sean.anderson@linux.dev>
Link: https://lore.kernel.org/r/20240620212005.821805-1-sean.anderson@linux.dev


Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent 1226a1b2
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -49,16 +49,17 @@ static ssize_t iio_hwmon_read_val(struct device *dev,
	struct iio_channel *chan = &state->channels[sattr->index];
	enum iio_chan_type type;

	ret = iio_read_channel_processed(chan, &result);
	if (ret < 0)
		return ret;

	ret = iio_get_channel_type(chan, &type);
	if (ret < 0)
		return ret;

	if (type == IIO_POWER)
		result *= 1000; /* mili-Watts to micro-Watts conversion */
		/* mili-Watts to micro-Watts conversion */
		ret = iio_read_channel_processed_scale(chan, &result, 1000);
	else
		ret = iio_read_channel_processed(chan, &result);
	if (ret < 0)
		return ret;

	return sprintf(buf, "%d\n", result);
}