Re: [PATCH v7 4/4] iio: adc: ad4080: add support for AD4880 dual-channel ADC

From: kernel test robot

Date: Mon Mar 23 2026 - 04:00:03 EST


Hi Antoniu,

kernel test robot noticed the following build warnings:

[auto build test WARNING on v7.0-rc4]
[also build test WARNING on linus/master]
[cannot apply to jic23-iio/togreg next-20260320]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Antoniu-Miclaus/iio-backend-use-__free-fwnode_handle-for-automatic-cleanup/20260322-200018
base: v7.0-rc4
patch link: https://lore.kernel.org/r/20260321100154.1258-5-antoniu.miclaus%40analog.com
patch subject: [PATCH v7 4/4] iio: adc: ad4080: add support for AD4880 dual-channel ADC
config: nios2-allmodconfig (https://download.01.org/0day-ci/archive/20260323/202603231533.tcfdLyO9-lkp@xxxxxxxxx/config)
compiler: nios2-linux-gcc (GCC) 11.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260323/202603231533.tcfdLyO9-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/202603231533.tcfdLyO9-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

drivers/iio/adc/ad4080.c: In function 'ad4080_probe':
drivers/iio/adc/ad4080.c:738:31: error: implicit declaration of function 'devm_spi_new_ancillary_device'; did you mean 'spi_new_ancillary_device'? [-Werror=implicit-function-declaration]
738 | st->spi[ch] = devm_spi_new_ancillary_device(spi, spi_get_chipselect(spi, ch));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| spi_new_ancillary_device
>> drivers/iio/adc/ad4080.c:738:29: warning: assignment to 'struct spi_device *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
738 | st->spi[ch] = devm_spi_new_ancillary_device(spi, spi_get_chipselect(spi, ch));
| ^
cc1: some warnings being treated as errors


vim +738 drivers/iio/adc/ad4080.c

704
705 static int ad4080_probe(struct spi_device *spi)
706 {
707 struct iio_dev *indio_dev;
708 struct device *dev = &spi->dev;
709 struct ad4080_state *st;
710 struct clk *clk;
711 int ret;
712
713 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
714 if (!indio_dev)
715 return -ENOMEM;
716
717 st = iio_priv(indio_dev);
718
719 ret = devm_regulator_bulk_get_enable(dev,
720 ARRAY_SIZE(ad4080_power_supplies),
721 ad4080_power_supplies);
722 if (ret)
723 return dev_err_probe(dev, ret,
724 "failed to get and enable supplies\n");
725
726 /* Setup primary SPI device (channel 0) */
727 st->spi[0] = spi;
728 st->regmap[0] = devm_regmap_init_spi(spi, &ad4080_regmap_config);
729 if (IS_ERR(st->regmap[0]))
730 return PTR_ERR(st->regmap[0]);
731
732 st->info = spi_get_device_match_data(spi);
733 if (!st->info)
734 return -ENODEV;
735
736 /* Setup ancillary SPI devices for additional channels */
737 for (unsigned int ch = 1; ch < st->info->num_channels; ch++) {
> 738 st->spi[ch] = devm_spi_new_ancillary_device(spi, spi_get_chipselect(spi, ch));
739 if (IS_ERR(st->spi[ch]))
740 return dev_err_probe(dev, PTR_ERR(st->spi[ch]),
741 "failed to register ancillary device\n");
742
743 st->regmap[ch] = devm_regmap_init_spi(st->spi[ch], &ad4080_regmap_config);
744 if (IS_ERR(st->regmap[ch]))
745 return PTR_ERR(st->regmap[ch]);
746 }
747
748 ret = devm_mutex_init(dev, &st->lock);
749 if (ret)
750 return ret;
751
752 indio_dev->name = st->info->name;
753 indio_dev->channels = st->info->channels;
754 indio_dev->num_channels = st->info->num_channels;
755 indio_dev->info = st->info->num_channels > 1 ?
756 &ad4880_iio_info : &ad4080_iio_info;
757
758 ret = ad4080_properties_parse(st, dev);
759 if (ret)
760 return ret;
761
762 clk = devm_clk_get_enabled(&spi->dev, "cnv");
763 if (IS_ERR(clk))
764 return PTR_ERR(clk);
765
766 st->clk_rate = clk_get_rate(clk);
767
768 /* Get backends for all channels */
769 for (unsigned int ch = 0; ch < st->info->num_channels; ch++) {
770 st->back[ch] = devm_iio_backend_get_by_index(dev, ch);
771 if (IS_ERR(st->back[ch]))
772 return PTR_ERR(st->back[ch]);
773
774 ret = devm_iio_backend_enable(dev, st->back[ch]);
775 if (ret)
776 return ret;
777 }
778
779 /*
780 * Request buffer from the first backend only. For multi-channel
781 * devices (e.g., AD4880), all backends share a single IIO buffer
782 * as data from all ADC channels is interleaved into one stream.
783 */
784 ret = devm_iio_backend_request_buffer(dev, st->back[0], indio_dev);
785 if (ret)
786 return ret;
787
788 ret = ad4080_setup(indio_dev);
789 if (ret)
790 return ret;
791
792 return devm_iio_device_register(&spi->dev, indio_dev);
793 }
794

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