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! ~~