Re: [PATCH v5 3/4] iio: adc: ad4691: add triggered buffer support

From: kernel test robot

Date: Mon Mar 30 2026 - 19:52:18 EST


Hi Radu,

kernel test robot noticed the following build warnings:

[auto build test WARNING on 11439c4635edd669ae435eec308f4ab8a0804808]

url: https://github.com/intel-lab-lkp/linux/commits/Radu-Sabau-via-B4-Relay/dt-bindings-iio-adc-add-AD4691-family/20260330-200546
base: 11439c4635edd669ae435eec308f4ab8a0804808
patch link: https://lore.kernel.org/r/20260327-ad4692-multichannel-sar-adc-driver-v5-3-11f789de47b8%40analog.com
patch subject: [PATCH v5 3/4] iio: adc: ad4691: add triggered buffer support
config: i386-randconfig-r131-20260331 (https://download.01.org/0day-ci/archive/20260331/202603310753.zLWq0JDB-lkp@xxxxxxxxx/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260331/202603310753.zLWq0JDB-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603310753.zLWq0JDB-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
>> drivers/iio/adc/ad4691.c:675:47: sparse: sparse: dereference of noderef expression
>> drivers/iio/adc/ad4691.c:675:47: sparse: sparse: dereference of noderef expression
drivers/iio/adc/ad4691.c:757:47: sparse: sparse: dereference of noderef expression
drivers/iio/adc/ad4691.c:757:47: sparse: sparse: dereference of noderef expression
drivers/iio/adc/ad4691.c:809:46: sparse: sparse: dereference of noderef expression
drivers/iio/adc/ad4691.c:809:46: sparse: sparse: dereference of noderef expression
drivers/iio/adc/ad4691.c:815:40: sparse: sparse: dereference of noderef expression
drivers/iio/adc/ad4691.c:815:40: sparse: sparse: dereference of noderef expression
drivers/iio/adc/ad4691.c: note: in included file:
include/linux/bitmap.h:797:55: sparse: sparse: shift too big (32) for type unsigned long
include/linux/bitmap.h:797:55: sparse: sparse: shift too big (32) for type unsigned long

vim +675 drivers/iio/adc/ad4691.c

668
669 static int ad4691_manual_buffer_preenable(struct iio_dev *indio_dev)
670 {
671 struct ad4691_state *st = iio_priv(indio_dev);
672 struct device *dev = regmap_get_device(st->regmap);
673 struct spi_device *spi = to_spi_device(dev);
674 unsigned int n_active = bitmap_weight(indio_dev->active_scan_mask,
> 675 indio_dev->masklength);
676 unsigned int n_xfers = n_active + 1;
677 unsigned int k, i;
678 int ret;
679
680 st->scan_xfers = kcalloc(n_xfers, sizeof(*st->scan_xfers), GFP_KERNEL);
681 if (!st->scan_xfers)
682 return -ENOMEM;
683
684 st->scan_tx = kcalloc(n_xfers, sizeof(*st->scan_tx), GFP_KERNEL);
685 if (!st->scan_tx) {
686 kfree(st->scan_xfers);
687 return -ENOMEM;
688 }
689
690 st->scan_rx = kcalloc(n_xfers, sizeof(*st->scan_rx), GFP_KERNEL);
691 if (!st->scan_rx) {
692 kfree(st->scan_tx);
693 kfree(st->scan_xfers);
694 return -ENOMEM;
695 }
696
697 spi_message_init(&st->scan_msg);
698
699 k = 0;
700 iio_for_each_active_channel(indio_dev, i) {
701 st->scan_tx[k] = cpu_to_be16(AD4691_ADC_CHAN(i));
702 st->scan_xfers[k].tx_buf = &st->scan_tx[k];
703 st->scan_xfers[k].rx_buf = &st->scan_rx[k];
704 st->scan_xfers[k].len = sizeof(__be16);
705 st->scan_xfers[k].cs_change = 1;
706 spi_message_add_tail(&st->scan_xfers[k], &st->scan_msg);
707 k++;
708 }
709
710 /* Final NOOP transfer to retrieve last channel's result. */
711 st->scan_tx[k] = cpu_to_be16(AD4691_NOOP);
712 st->scan_xfers[k].tx_buf = &st->scan_tx[k];
713 st->scan_xfers[k].rx_buf = &st->scan_rx[k];
714 st->scan_xfers[k].len = sizeof(__be16);
715 spi_message_add_tail(&st->scan_xfers[k], &st->scan_msg);
716
717 st->scan_msg.spi = spi;
718
719 ret = spi_optimize_message(spi, &st->scan_msg);
720 if (ret) {
721 ad4691_free_scan_bufs(st);
722 return ret;
723 }
724
725 ret = ad4691_enter_conversion_mode(st);
726 if (ret) {
727 spi_unoptimize_message(&st->scan_msg);
728 ad4691_free_scan_bufs(st);
729 return ret;
730 }
731
732 return 0;
733 }
734

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki