All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Wolfram Sang <wsa-dev@sang-engineering.com>
Cc: oe-kbuild-all@lists.linux.dev
Subject: [wsa:i2c/time_left 87/94] drivers/media/common/saa7146/saa7146_i2c.c:223:29: sparse: sparse: incompatible types in comparison expression (different signedness):
Date: Sat, 27 Apr 2024 10:12:34 +0800	[thread overview]
Message-ID: <202404271011.dke7uy5U-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git i2c/time_left
head:   f40d9c303c85f20a79881e3dc955ec601bef36fb
commit: d47ee85aaf42ffd72a8961d7593ecf69c1b2f2f2 [87/94] media: common: saa7146: saa7146_i2c: use 'time_left' variable with wait_event_interruptible_timeout()
config: csky-randconfig-r112-20240427 (https://download.01.org/0day-ci/archive/20240427/202404271011.dke7uy5U-lkp@intel.com/config)
compiler: csky-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20240427/202404271011.dke7uy5U-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
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202404271011.dke7uy5U-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> drivers/media/common/saa7146/saa7146_i2c.c:223:29: sparse: sparse: incompatible types in comparison expression (different signedness):
   drivers/media/common/saa7146/saa7146_i2c.c:223:29: sparse:    unsigned long *
   drivers/media/common/saa7146/saa7146_i2c.c:223:29: sparse:    long *
   drivers/media/common/saa7146/saa7146_i2c.c:237:29: sparse: sparse: incompatible types in comparison expression (different signedness):
   drivers/media/common/saa7146/saa7146_i2c.c:237:29: sparse:    unsigned long *
   drivers/media/common/saa7146/saa7146_i2c.c:237:29: sparse:    long *

vim +223 drivers/media/common/saa7146/saa7146_i2c.c

   172	
   173	/* this functions writes out the data-byte 'dword' to the i2c-device.
   174	   it returns 0 if ok, -1 if the transfer failed, -2 if the transfer
   175	   failed badly (e.g. address error) */
   176	static int saa7146_i2c_writeout(struct saa7146_dev *dev, __le32 *dword, int short_delay)
   177	{
   178		u32 status = 0, mc2 = 0;
   179		int trial = 0;
   180		long time_left;
   181	
   182		/* write out i2c-command */
   183		DEB_I2C("before: 0x%08x (status: 0x%08x), %d\n",
   184			*dword, saa7146_read(dev, I2C_STATUS), dev->i2c_op);
   185	
   186		if( 0 != (SAA7146_USE_I2C_IRQ & dev->ext->flags)) {
   187	
   188			saa7146_write(dev, I2C_STATUS,	 dev->i2c_bitrate);
   189			saa7146_write(dev, I2C_TRANSFER, le32_to_cpu(*dword));
   190	
   191			dev->i2c_op = 1;
   192			SAA7146_ISR_CLEAR(dev, MASK_16|MASK_17);
   193			SAA7146_IER_ENABLE(dev, MASK_16|MASK_17);
   194			saa7146_write(dev, MC2, (MASK_00 | MASK_16));
   195	
   196			time_left = HZ/100 + 1; /* 10ms */
   197			time_left = wait_event_interruptible_timeout(dev->i2c_wq, dev->i2c_op == 0,
   198								     time_left);
   199			if (time_left == -ERESTARTSYS || dev->i2c_op) {
   200				SAA7146_IER_DISABLE(dev, MASK_16|MASK_17);
   201				SAA7146_ISR_CLEAR(dev, MASK_16|MASK_17);
   202				if (time_left == -ERESTARTSYS)
   203					/* a signal arrived */
   204					return -ERESTARTSYS;
   205	
   206				pr_warn("%s %s [irq]: timed out waiting for end of xfer\n",
   207					dev->name, __func__);
   208				return -EIO;
   209			}
   210			status = saa7146_read(dev, I2C_STATUS);
   211		} else {
   212			saa7146_write(dev, I2C_STATUS,	 dev->i2c_bitrate);
   213			saa7146_write(dev, I2C_TRANSFER, le32_to_cpu(*dword));
   214			saa7146_write(dev, MC2, (MASK_00 | MASK_16));
   215	
   216			/* do not poll for i2c-status before upload is complete */
   217			time_left = jiffies + HZ/100 + 1; /* 10ms */
   218			while(1) {
   219				mc2 = (saa7146_read(dev, MC2) & 0x1);
   220				if( 0 != mc2 ) {
   221					break;
   222				}
 > 223				if (time_after(jiffies,time_left)) {
   224					pr_warn("%s %s: timed out waiting for MC2\n",
   225						dev->name, __func__);
   226					return -EIO;
   227				}
   228			}
   229			/* wait until we get a transfer done or error */
   230			time_left = jiffies + HZ/100 + 1; /* 10ms */
   231			/* first read usually delivers bogus results... */
   232			saa7146_i2c_status(dev);
   233			while(1) {
   234				status = saa7146_i2c_status(dev);
   235				if ((status & 0x3) != 1)
   236					break;
   237				if (time_after(jiffies,time_left)) {
   238					/* this is normal when probing the bus
   239					 * (no answer from nonexisistant device...)
   240					 */
   241					pr_warn("%s %s [poll]: timed out waiting for end of xfer\n",
   242						dev->name, __func__);
   243					return -EIO;
   244				}
   245				if (++trial < 50 && short_delay)
   246					udelay(10);
   247				else
   248					msleep(1);
   249			}
   250		}
   251	
   252		/* give a detailed status report */
   253		if ( 0 != (status & (SAA7146_I2C_SPERR | SAA7146_I2C_APERR |
   254				     SAA7146_I2C_DTERR | SAA7146_I2C_DRERR |
   255				     SAA7146_I2C_AL    | SAA7146_I2C_ERR   |
   256				     SAA7146_I2C_BUSY)) ) {
   257	
   258			if ( 0 == (status & SAA7146_I2C_ERR) ||
   259			     0 == (status & SAA7146_I2C_BUSY) ) {
   260				/* it may take some time until ERR goes high - ignore */
   261				DEB_I2C("unexpected i2c status %04x\n", status);
   262			}
   263			if( 0 != (status & SAA7146_I2C_SPERR) ) {
   264				DEB_I2C("error due to invalid start/stop condition\n");
   265			}
   266			if( 0 != (status & SAA7146_I2C_DTERR) ) {
   267				DEB_I2C("error in data transmission\n");
   268			}
   269			if( 0 != (status & SAA7146_I2C_DRERR) ) {
   270				DEB_I2C("error when receiving data\n");
   271			}
   272			if( 0 != (status & SAA7146_I2C_AL) ) {
   273				DEB_I2C("error because arbitration lost\n");
   274			}
   275	
   276			/* we handle address-errors here */
   277			if( 0 != (status & SAA7146_I2C_APERR) ) {
   278				DEB_I2C("error in address phase\n");
   279				return -EREMOTEIO;
   280			}
   281	
   282			return -EIO;
   283		}
   284	
   285		/* read back data, just in case we were reading ... */
   286		*dword = cpu_to_le32(saa7146_read(dev, I2C_TRANSFER));
   287	
   288		DEB_I2C("after: 0x%08x\n", *dword);
   289		return 0;
   290	}
   291	

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

                 reply	other threads:[~2024-04-27  2:13 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202404271011.dke7uy5U-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=wsa-dev@sang-engineering.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.