Skip to content

Commit 8a3dcc9

Browse files
mattmart3jic23
authored andcommitted
iio: fix scale application in iio_convert_raw_to_processed_unlocked
When the scale_type is IIO_VAL_INT_PLUS_MICRO or IIO_VAL_INT_PLUS_NANO the scale passed as argument is only applied to the fractional part of the value. Fix it by also multiplying the integer part by the scale provided. Fixes: 48e44ce ("iio:inkern: Add function to read the processed value") Signed-off-by: Matteo Martelli <[email protected]> Link: https://patch.msgid.link/[email protected] Cc: <[email protected]> Signed-off-by: Jonathan Cameron <[email protected]>
1 parent 2f6b92d commit 8a3dcc9

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

drivers/iio/inkern.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -647,17 +647,17 @@ static int iio_convert_raw_to_processed_unlocked(struct iio_channel *chan,
647647
break;
648648
case IIO_VAL_INT_PLUS_MICRO:
649649
if (scale_val2 < 0)
650-
*processed = -raw64 * scale_val;
650+
*processed = -raw64 * scale_val * scale;
651651
else
652-
*processed = raw64 * scale_val;
652+
*processed = raw64 * scale_val * scale;
653653
*processed += div_s64(raw64 * (s64)scale_val2 * scale,
654654
1000000LL);
655655
break;
656656
case IIO_VAL_INT_PLUS_NANO:
657657
if (scale_val2 < 0)
658-
*processed = -raw64 * scale_val;
658+
*processed = -raw64 * scale_val * scale;
659659
else
660-
*processed = raw64 * scale_val;
660+
*processed = raw64 * scale_val * scale;
661661
*processed += div_s64(raw64 * (s64)scale_val2 * scale,
662662
1000000000LL);
663663
break;

0 commit comments

Comments
 (0)