Re: [PATCH v2] drivers: iio: adc: add support for ad777x family

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi ranechita,

kernel test robot noticed the following build warnings:

[auto build test WARNING on jic23-iio/togreg]
[also build test WARNING on linus/master v6.10-rc1 next-20240529]
[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/ranechita/drivers-iio-adc-add-support-for-ad777x-family/20240529-230814
base:   https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git togreg
patch link:    https://lore.kernel.org/r/20240529150322.28018-1-ramona.nechita%40analog.com
patch subject: [PATCH v2] drivers: iio: adc: add support for ad777x family
config: microblaze-randconfig-r113-20240531 (https://download.01.org/0day-ci/archive/20240531/202405310747.6KO7w1V1-lkp@xxxxxxxxx/config)
compiler: microblaze-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20240531/202405310747.6KO7w1V1-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/202405310747.6KO7w1V1-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
>> drivers/iio/adc/ad7779.c:571:35: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __be32 @@     got unsigned long @@
   drivers/iio/adc/ad7779.c:571:35: sparse:     expected restricted __be32
   drivers/iio/adc/ad7779.c:571:35: sparse:     got unsigned long
>> drivers/iio/adc/ad7779.c:581:42: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __be32 @@     got unsigned int [usertype] @@
   drivers/iio/adc/ad7779.c:581:42: sparse:     expected restricted __be32
   drivers/iio/adc/ad7779.c:581:42: sparse:     got unsigned int [usertype]
>> drivers/iio/adc/ad7779.c:685:35: sparse: sparse: symbol 'ad777x_buffer_setup_ops' was not declared. Should it be static?
   drivers/iio/adc/ad7779.c: note: in included file (through include/linux/mutex.h, include/linux/notifier.h, include/linux/clk.h):
   include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true
   include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true
   include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true
   include/linux/list.h:83:21: sparse: sparse: self-comparison always evaluates to true

vim +571 drivers/iio/adc/ad7779.c

   552	
   553	static irqreturn_t ad777x_irq_handler(int irq, void *data)
   554	{
   555		struct iio_dev *indio_dev = data;
   556		struct ad777x_state *st = iio_priv(indio_dev);
   557		int ret;
   558		__be32 tmp[8];
   559		int i;
   560		int k = 0;
   561	
   562		struct spi_transfer sd_readback_tr[] = {
   563			{
   564				.rx_buf = st->spidata_rx,
   565				.tx_buf = st->spidata_tx,
   566				.len = 32,
   567			}
   568		};
   569	
   570		if (iio_buffer_enabled(indio_dev)) {
 > 571			st->spidata_tx[0] = AD777X_SPI_READ_CMD;
   572			ret = spi_sync_transfer(st->spi, sd_readback_tr,
   573						ARRAY_SIZE(sd_readback_tr));
   574			if (ret) {
   575				dev_err(&st->spi->dev,
   576					"spi transfer error in irq handler");
   577				return IRQ_HANDLED;
   578			}
   579			for (i = 0; i < AD777X_NUM_CHANNELS; i++) {
   580				if (st->active_ch & BIT(i))
 > 581					tmp[k++] = __be32_to_cpu(st->spidata_rx[i]);
   582			}
   583			iio_push_to_buffers(indio_dev, &tmp[0]);
   584		}
   585	
   586		return IRQ_HANDLED;
   587	}
   588	
   589	static int ad777x_reset(struct iio_dev *indio_dev, struct gpio_desc *reset_gpio)
   590	{
   591		struct ad777x_state *st = iio_priv(indio_dev);
   592		int ret;
   593		struct spi_transfer reg_read_tr[] = {
   594			{
   595				.tx_buf = st->reset_buf,
   596				.len = 8,
   597			},
   598		};
   599	
   600		memset(st->reset_buf, 0xff, sizeof(st->reset_buf));
   601	
   602		if (reset_gpio) {
   603			gpiod_set_value(reset_gpio, 1);
   604			fsleep(230);
   605			return 0;
   606		}
   607	
   608		ret = spi_sync_transfer(st->spi, reg_read_tr,
   609					ARRAY_SIZE(reg_read_tr));
   610		if (ret)
   611			return ret;
   612	
   613		fsleep(230);
   614	
   615		return 0;
   616	}
   617	
   618	static const struct iio_info ad777x_info = {
   619		.read_raw = ad777x_read_raw,
   620		.write_raw = ad777x_write_raw,
   621		.debugfs_reg_access = &ad777x_reg_access,
   622		.update_scan_mode = &ad777x_update_scan_mode,
   623	};
   624	
   625	static const struct iio_enum ad777x_filter_enum = {
   626		.items = ad777x_filter_type,
   627		.num_items = ARRAY_SIZE(ad777x_filter_type),
   628		.get = ad777x_get_filter,
   629		.set = ad777x_set_filter,
   630	};
   631	
   632	static const struct iio_chan_spec_ext_info ad777x_ext_filter[] = {
   633		IIO_ENUM("filter_type", IIO_SHARED_BY_ALL, &ad777x_filter_enum),
   634		IIO_ENUM_AVAILABLE("filter_type", IIO_SHARED_BY_ALL,
   635					  &ad777x_filter_enum),
   636		{ }
   637	};
   638	
   639	#define AD777x_CHAN_S(index, _ext_info)					       \
   640		{								       \
   641			.type = IIO_VOLTAGE,					       \
   642			.info_mask_separate = BIT(IIO_CHAN_INFO_CALIBSCALE)  |	       \
   643					      BIT(IIO_CHAN_INFO_CALIBBIAS),	       \
   644			.info_mask_shared_by_all = BIT(IIO_CHAN_INFO_SAMP_FREQ),       \
   645			.address = (index),					       \
   646			.indexed = 1,						       \
   647			.channel = (index),					       \
   648			.scan_index = (index),					       \
   649			.ext_info = (_ext_info),				       \
   650			.scan_type = {						       \
   651				.sign = 's',					       \
   652				.realbits = 24,					       \
   653				.storagebits = 32,				       \
   654			},							       \
   655		}
   656	
   657	#define AD777x_CHAN_NO_FILTER_S(index)					       \
   658		AD777x_CHAN_S(index, NULL)
   659	
   660	#define AD777x_CHAN_FILTER_S(index)					       \
   661		AD777x_CHAN_S(index, ad777x_ext_filter)
   662	
   663	static const struct iio_chan_spec ad777x_channels[] = {
   664		AD777x_CHAN_NO_FILTER_S(0),
   665		AD777x_CHAN_NO_FILTER_S(1),
   666		AD777x_CHAN_NO_FILTER_S(2),
   667		AD777x_CHAN_NO_FILTER_S(3),
   668		AD777x_CHAN_NO_FILTER_S(4),
   669		AD777x_CHAN_NO_FILTER_S(5),
   670		AD777x_CHAN_NO_FILTER_S(6),
   671		AD777x_CHAN_NO_FILTER_S(7),
   672	};
   673	
   674	static const struct iio_chan_spec ad777x_channels_filter[] = {
   675		AD777x_CHAN_FILTER_S(0),
   676		AD777x_CHAN_FILTER_S(1),
   677		AD777x_CHAN_FILTER_S(2),
   678		AD777x_CHAN_FILTER_S(3),
   679		AD777x_CHAN_FILTER_S(4),
   680		AD777x_CHAN_FILTER_S(5),
   681		AD777x_CHAN_FILTER_S(6),
   682		AD777x_CHAN_FILTER_S(7),
   683	};
   684	
 > 685	const struct iio_buffer_setup_ops ad777x_buffer_setup_ops = {
   686		.postenable = ad777x_buffer_postenable,
   687		.predisable = ad777x_buffer_predisable,
   688	};
   689	

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




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux