mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 20:22:09 +00:00
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: Sean Anderson <sean.anderson@linux.dev> Link: https://lore.kernel.org/r/20240620212005.821805-1-sean.anderson@linux.dev Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
parent
1226a1b2e5
commit
52c1e818d6
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user