drivers/iio/adc/ad7625.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Smatch reports a type mismatch warning in ad7625_set_sampling_freq()
where the clamp() macro is evaluating differing types:
- `target` is a u32
- `100` evaluates as a signed int
- `10 * KILO` evaluates as an unsigned long (due to KILO being 1000UL)
Replace clamp() with clamp_t(u32, ...) to explicitly cast the bounds
to match the u32 target variable.
Signed-off-by: Giorgi Tchankvetadze <giorgitchankvetadze1997@gmail.com>
---
drivers/iio/adc/ad7625.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/iio/adc/ad7625.c b/drivers/iio/adc/ad7625.c
index 0466c0c7eae4..fb0fe2434c68 100644
--- a/drivers/iio/adc/ad7625.c
+++ b/drivers/iio/adc/ad7625.c
@@ -180,7 +180,7 @@ static int ad7625_set_sampling_freq(struct ad7625_state *st, u32 freq)
int ret;
target = DIV_ROUND_UP(NSEC_PER_SEC, freq);
- cnv_wf.period_length_ns = clamp(target, 100, 10 * KILO);
+ cnv_wf.period_length_ns = clamp_t(u32, target, 100, 10 * KILO);
/*
* Use the maximum conversion time t_CNVH from the datasheet as
--
2.52.0
On Wed, Apr 22, 2026 at 06:25:42PM +0400, Giorgi Tchankvetadze wrote: > Smatch reports a type mismatch warning in ad7625_set_sampling_freq() > where the clamp() macro is evaluating differing types: > - `target` is a u32 > - `100` evaluates as a signed int > - `10 * KILO` evaluates as an unsigned long (due to KILO being 1000UL) > Replace clamp() with clamp_t(u32, ...) to explicitly cast the bounds > to match the u32 target variable. No. Try to avoid as much as possible use of _t variants of max(), clamp(), and min() (the list is sorted from the least critical to the most), Also we have constant multipliers for frequency in units.h. -- With Best Regards, Andy Shevchenko
On Wed, Apr 22, 2026 at 07:20:06PM +0300, Andy Shevchenko wrote: > On Wed, Apr 22, 2026 at 06:25:42PM +0400, Giorgi Tchankvetadze wrote: > > Smatch reports a type mismatch warning in ad7625_set_sampling_freq() > > where the clamp() macro is evaluating differing types: > > - `target` is a u32 > > - `100` evaluates as a signed int > > - `10 * KILO` evaluates as an unsigned long (due to KILO being 1000UL) > > > Replace clamp() with clamp_t(u32, ...) to explicitly cast the bounds > > to match the u32 target variable. > > No. Try to avoid as much as possible use of _t variants of max(), clamp(), > and min() (the list is sorted from the least critical to the most), > > Also we have constant multipliers for frequency in units.h. Reading again it seems like one from time.h actually fits better NSEC_PER_USEC. -- With Best Regards, Andy Shevchenko
© 2016 - 2026 Red Hat, Inc.