drivers/iio/adc/ti_am335x_adc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
FIELD_PREP() checks that a value fits into the available bitfield, add a
check for step_avg to fix gcc complains.
which gcc complains about:
drivers/iio/adc/ti_am335x_adc.c: In function 'tiadc_step_config':
include/linux/compiler_types.h:572:38: error: call to
'__compiletime_assert_491' declared with attribute error: FIELD_PREP: value
too large for the field include/linux/mfd/ti_am335x_tscadc.h:58:29: note:
in expansion of macro 'FIELD_PREP'
#define STEPCONFIG_AVG(val) FIELD_PREP(GENMASK(4, 2), (val))
^~~~~~~~~~
drivers/iio/adc/ti_am335x_adc.c:127:17: note: in expansion of macro 'STEPCONFIG_AVG'
stepconfig = STEPCONFIG_AVG(ffs(adc_dev->step_avg[i]) - 1)
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202510102117.Jqxrw1vF-lkp@intel.com/
Signed-off-by: Pei Xiao <xiaopei01@kylinos.cn>
---
changes in v2: use '<=',adc_dev->step_avg[i]'s max value is STEPCONFIG_AVG_16
---
drivers/iio/adc/ti_am335x_adc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c
index 99f274adc870..a1a28584de93 100644
--- a/drivers/iio/adc/ti_am335x_adc.c
+++ b/drivers/iio/adc/ti_am335x_adc.c
@@ -123,7 +123,7 @@ static void tiadc_step_config(struct iio_dev *indio_dev)
chan = adc_dev->channel_line[i];
- if (adc_dev->step_avg[i])
+ if (adc_dev->step_avg[i] && adc_dev->step_avg[i] <= STEPCONFIG_AVG_16)
stepconfig = STEPCONFIG_AVG(ffs(adc_dev->step_avg[i]) - 1) |
STEPCONFIG_FIFO1;
else
--
2.25.1
On Tue, 14 Oct 2025 17:12:50 +0800 Pei Xiao <xiaopei01@kylinos.cn> wrote: > FIELD_PREP() checks that a value fits into the available bitfield, add a > check for step_avg to fix gcc complains. > > which gcc complains about: > drivers/iio/adc/ti_am335x_adc.c: In function 'tiadc_step_config': > include/linux/compiler_types.h:572:38: error: call to > '__compiletime_assert_491' declared with attribute error: FIELD_PREP: value > too large for the field include/linux/mfd/ti_am335x_tscadc.h:58:29: note: > in expansion of macro 'FIELD_PREP' > #define STEPCONFIG_AVG(val) FIELD_PREP(GENMASK(4, 2), (val)) > ^~~~~~~~~~ > drivers/iio/adc/ti_am335x_adc.c:127:17: note: in expansion of macro 'STEPCONFIG_AVG' > stepconfig = STEPCONFIG_AVG(ffs(adc_dev->step_avg[i]) - 1) > > Reported-by: kernel test robot <lkp@intel.com> > Closes: https://lore.kernel.org/oe-kbuild-all/202510102117.Jqxrw1vF-lkp@intel.com/ > Signed-off-by: Pei Xiao <xiaopei01@kylinos.cn> Given it is a false positive warning I've not queued this up as a fix, but rather for the next merge window. If people think it is more urgent that that then reply to let me know. Applied to the togreg branch of iio.git and pushed out as testing to see if we get an autobuilder warnings. Thanks, Jonathan > --- > changes in v2: use '<=',adc_dev->step_avg[i]'s max value is STEPCONFIG_AVG_16 > --- > drivers/iio/adc/ti_am335x_adc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c > index 99f274adc870..a1a28584de93 100644 > --- a/drivers/iio/adc/ti_am335x_adc.c > +++ b/drivers/iio/adc/ti_am335x_adc.c > @@ -123,7 +123,7 @@ static void tiadc_step_config(struct iio_dev *indio_dev) > > chan = adc_dev->channel_line[i]; > > - if (adc_dev->step_avg[i]) > + if (adc_dev->step_avg[i] && adc_dev->step_avg[i] <= STEPCONFIG_AVG_16) > stepconfig = STEPCONFIG_AVG(ffs(adc_dev->step_avg[i]) - 1) | > STEPCONFIG_FIFO1; > else
© 2016 - 2025 Red Hat, Inc.