Messages in this thread Patch in this message | | | From | Liam Beguin <> | Subject | [PATCH v6 05/13] iio: afe: rescale: add INT_PLUS_{MICRO,NANO} support | Date | Tue, 20 Jul 2021 23:06:05 -0400 |
| |
From: Liam Beguin <lvb@xiphos.com>
Some ADCs use IIO_VAL_INT_PLUS_{NANO,MICRO} scale types. Add support for these to allow using the iio-rescaler with them.
Signed-off-by: Liam Beguin <lvb@xiphos.com> --- drivers/iio/afe/iio-rescale.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
diff --git a/drivers/iio/afe/iio-rescale.c b/drivers/iio/afe/iio-rescale.c index d0669fd8eac5..2b73047365cc 100644 --- a/drivers/iio/afe/iio-rescale.c +++ b/drivers/iio/afe/iio-rescale.c @@ -41,6 +41,20 @@ int rescale_process_scale(struct rescale *rescale, int scale_type, do_div(tmp, 1000000000LL); *val = tmp; return scale_type; + case IIO_VAL_INT_PLUS_NANO: + tmp = ((s64)*val * 1000000000LL + *val2) * rescale->numerator; + tmp = div_s64(tmp, rescale->denominator); + + *val = div_s64(tmp, 1000000000LL); + *val2 = tmp - *val * 1000000000LL; + return scale_type; + case IIO_VAL_INT_PLUS_MICRO: + tmp = ((s64)*val * 1000000LL + *val2) * rescale->numerator; + tmp = div_s64(tmp, rescale->denominator); + + *val = div_s64(tmp, 1000000); + *val2 = tmp - *val * 1000000; + return scale_type; default: return -EOPNOTSUPP; } -- 2.30.1.489.g328c10930387
| |