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

From: Matti Vaittinen
Date: Mon Feb 05 2024 - 04:20:29 EST


On 2/4/24 15:49, Subhajit Ghosh wrote:
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.

Great! Thanks a lot Subhajit! Your testing is very much appreciated :)

I think you sent another version of your APDS9306 driver. AFAIR, this driver could have benefited from the above rounding fix. I will see if I find the time and energy to see if I can dive into this again and re-spin this rounding fix. No promises but I'll try :)

Yours,
-- Matti

--
Matti Vaittinen
Linux kernel developer at ROHM Semiconductors
Oulu Finland

~~ When things go utterly wrong vim users can always type :help! ~~