mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* drivers/i2c/busses/i2c-tegra.c:935:21: sparse: sparse: incorrect type in assignment (different base types)
@ 2026-06-14 23:40 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-06-14 23:40 UTC (permalink / raw)
  To: Johan Hovold; +Cc: oe-kbuild-all, linux-kernel, Wolfram Sang

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   8cd9520d35a6c38db6567e97dd93b1f11f185dc6
commit: 73e65c424867fb9396de6d1265228b75e1ee0718 i2c: tegra: enable compile testing on all archs
date:   3 months ago
config: s390-randconfig-r113-20260614 (https://download.01.org/0day-ci/archive/20260615/202606150754.zgRoeRqx-lkp@intel.com/config)
compiler: s390-linux-gcc (GCC) 15.2.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260615/202606150754.zgRoeRqx-lkp@intel.com/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
| Fixes: 73e65c424867 ("i2c: tegra: enable compile testing on all archs")
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202606150754.zgRoeRqx-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> drivers/i2c/busses/i2c-tegra.c:935:21: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [assigned] [usertype] val @@     got restricted __le32 [usertype] @@
   drivers/i2c/busses/i2c-tegra.c:935:21: sparse:     expected unsigned int [assigned] [usertype] val
   drivers/i2c/busses/i2c-tegra.c:935:21: sparse:     got restricted __le32 [usertype]
   drivers/i2c/busses/i2c-tegra.c:1012:23: sparse: sparse: cast to restricted __le32

vim +935 drivers/i2c/busses/i2c-tegra.c

77821b4678f93b Shardar Shariff Md 2016-08-31  890  
df384fa58a321a Dmitry Osipenko    2020-09-30  891  static int tegra_i2c_empty_rx_fifo(struct tegra_i2c_dev *i2c_dev)
df384fa58a321a Dmitry Osipenko    2020-09-30  892  {
df384fa58a321a Dmitry Osipenko    2020-09-30  893  	size_t buf_remaining = i2c_dev->msg_buf_remaining;
89e3748acd0bf6 Dmitry Osipenko    2020-09-30  894  	unsigned int words_to_transfer, rx_fifo_avail;
89e3748acd0bf6 Dmitry Osipenko    2020-09-30  895  	u8 *buf = i2c_dev->msg_buf;
89e3748acd0bf6 Dmitry Osipenko    2020-09-30  896  	u32 val;
df384fa58a321a Dmitry Osipenko    2020-09-30  897  
df384fa58a321a Dmitry Osipenko    2020-09-30  898  	/*
94a5573f0719cf Dmitry Osipenko    2020-09-30  899  	 * Catch overflow due to message fully sent before the check for
94a5573f0719cf Dmitry Osipenko    2020-09-30  900  	 * RX FIFO availability.
df384fa58a321a Dmitry Osipenko    2020-09-30  901  	 */
df384fa58a321a Dmitry Osipenko    2020-09-30  902  	if (WARN_ON_ONCE(!(i2c_dev->msg_buf_remaining)))
df384fa58a321a Dmitry Osipenko    2020-09-30  903  		return -EINVAL;
df384fa58a321a Dmitry Osipenko    2020-09-30  904  
df384fa58a321a Dmitry Osipenko    2020-09-30  905  	if (i2c_dev->hw->has_mst_fifo) {
df384fa58a321a Dmitry Osipenko    2020-09-30  906  		val = i2c_readl(i2c_dev, I2C_MST_FIFO_STATUS);
df384fa58a321a Dmitry Osipenko    2020-09-30  907  		rx_fifo_avail = FIELD_GET(I2C_MST_FIFO_STATUS_RX, val);
df384fa58a321a Dmitry Osipenko    2020-09-30  908  	} else {
df384fa58a321a Dmitry Osipenko    2020-09-30  909  		val = i2c_readl(i2c_dev, I2C_FIFO_STATUS);
df384fa58a321a Dmitry Osipenko    2020-09-30  910  		rx_fifo_avail = FIELD_GET(I2C_FIFO_STATUS_RX, val);
df384fa58a321a Dmitry Osipenko    2020-09-30  911  	}
df384fa58a321a Dmitry Osipenko    2020-09-30  912  
94a5573f0719cf Dmitry Osipenko    2020-09-30  913  	/* round down to exclude partial word at the end of buffer */
df384fa58a321a Dmitry Osipenko    2020-09-30  914  	words_to_transfer = buf_remaining / BYTES_PER_FIFO_WORD;
df384fa58a321a Dmitry Osipenko    2020-09-30  915  	if (words_to_transfer > rx_fifo_avail)
df384fa58a321a Dmitry Osipenko    2020-09-30  916  		words_to_transfer = rx_fifo_avail;
df384fa58a321a Dmitry Osipenko    2020-09-30  917  
df384fa58a321a Dmitry Osipenko    2020-09-30  918  	i2c_readsl(i2c_dev, buf, I2C_RX_FIFO, words_to_transfer);
df384fa58a321a Dmitry Osipenko    2020-09-30  919  
df384fa58a321a Dmitry Osipenko    2020-09-30  920  	buf += words_to_transfer * BYTES_PER_FIFO_WORD;
df384fa58a321a Dmitry Osipenko    2020-09-30  921  	buf_remaining -= words_to_transfer * BYTES_PER_FIFO_WORD;
df384fa58a321a Dmitry Osipenko    2020-09-30  922  	rx_fifo_avail -= words_to_transfer;
df384fa58a321a Dmitry Osipenko    2020-09-30  923  
df384fa58a321a Dmitry Osipenko    2020-09-30  924  	/*
94a5573f0719cf Dmitry Osipenko    2020-09-30  925  	 * If there is a partial word at the end of buffer, handle it
94a5573f0719cf Dmitry Osipenko    2020-09-30  926  	 * manually to prevent overwriting past the end of buffer.
df384fa58a321a Dmitry Osipenko    2020-09-30  927  	 */
df384fa58a321a Dmitry Osipenko    2020-09-30  928  	if (rx_fifo_avail > 0 && buf_remaining > 0) {
df384fa58a321a Dmitry Osipenko    2020-09-30  929  		/*
df384fa58a321a Dmitry Osipenko    2020-09-30  930  		 * buf_remaining > 3 check not needed as rx_fifo_avail == 0
df384fa58a321a Dmitry Osipenko    2020-09-30  931  		 * when (words_to_transfer was > rx_fifo_avail) earlier
df384fa58a321a Dmitry Osipenko    2020-09-30  932  		 * in this function.
df384fa58a321a Dmitry Osipenko    2020-09-30  933  		 */
df384fa58a321a Dmitry Osipenko    2020-09-30  934  		val = i2c_readl(i2c_dev, I2C_RX_FIFO);
df384fa58a321a Dmitry Osipenko    2020-09-30 @935  		val = cpu_to_le32(val);
df384fa58a321a Dmitry Osipenko    2020-09-30  936  		memcpy(buf, &val, buf_remaining);
df384fa58a321a Dmitry Osipenko    2020-09-30  937  		buf_remaining = 0;
df384fa58a321a Dmitry Osipenko    2020-09-30  938  		rx_fifo_avail--;
df384fa58a321a Dmitry Osipenko    2020-09-30  939  	}
df384fa58a321a Dmitry Osipenko    2020-09-30  940  
df384fa58a321a Dmitry Osipenko    2020-09-30  941  	/* RX FIFO must be drained, otherwise it's an Overflow case. */
df384fa58a321a Dmitry Osipenko    2020-09-30  942  	if (WARN_ON_ONCE(rx_fifo_avail))
df384fa58a321a Dmitry Osipenko    2020-09-30  943  		return -EINVAL;
df384fa58a321a Dmitry Osipenko    2020-09-30  944  
df384fa58a321a Dmitry Osipenko    2020-09-30  945  	i2c_dev->msg_buf_remaining = buf_remaining;
df384fa58a321a Dmitry Osipenko    2020-09-30  946  	i2c_dev->msg_buf = buf;
df384fa58a321a Dmitry Osipenko    2020-09-30  947  
df384fa58a321a Dmitry Osipenko    2020-09-30  948  	return 0;
df384fa58a321a Dmitry Osipenko    2020-09-30  949  }
df384fa58a321a Dmitry Osipenko    2020-09-30  950  

:::::: The code at line 935 was first introduced by commit
:::::: df384fa58a321a88b22499a43cb5c5d0fb9f5364 i2c: tegra: Reorder location of functions in the code

:::::: TO: Dmitry Osipenko <digetx@gmail.com>
:::::: CC: Wolfram Sang <wsa@kernel.org>

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-06-14 23:40 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-14 23:40 drivers/i2c/busses/i2c-tegra.c:935:21: sparse: sparse: incorrect type in assignment (different base types) kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®