Re: [PATCH] iio: gts-helper: Fix division loop

From: Subhajit Ghosh
Date: Sun Feb 04 2024 - 08:49:42 EST


Hi Matti,
  drivers/iio/industrialio-gts-helper.c | 5 ++---
  1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/iio/industrialio-gts-helper.c b/drivers/iio/industrialio-gts-helper.c
index 7653261d2dc2..abcab2d38589 100644
--- a/drivers/iio/industrialio-gts-helper.c
+++ b/drivers/iio/industrialio-gts-helper.c
@@ -34,7 +34,7 @@
  static int iio_gts_get_gain(const u64 max, const u64 scale)
  {
      u64 full = max;
-    int tmp = 1;
+    int tmp = 0;
      if (scale > full || !scale)
          return -EINVAL;
@@ -48,8 +48,7 @@ static int iio_gts_get_gain(const u64 max, const u64 scale)
          tmp++;
      }
-    while (full > scale * (u64)tmp)
-        tmp++;
+    tmp += div64_u64(full, scale);
      return tmp;
  }

base-commit: 2cc14f52aeb78ce3f29677c2de1f06c0e91471ab


Hi Matti,

Your fix works beautifully with the latest version of apds9306 driver which I am working on.
All available scale values can be set without any errors. Thank you.

Thanks for testing Subhajit! Just to ensure we have no miscommunication - did you test just this division fix, or the rounding fix here:
https://lore.kernel.org/lkml/37d3aa193e69577353d314e94463a08d488ddd8d.1701780964.git.mazziesaccount@xxxxxxxxx/
You are most welcome. I did not check the above rounding fix pointed out by the link. I will be happy to check it and let you know by the end of this month.
I checked this division fix.
I tested the patch in the above link with adps9306 driver which I am working on and it seems to work well without any issues.

Regards,
Subhajit Ghosh