All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-next:master 10545/12559] drivers/iio/dac/mcp47feb02-core.c:833 mcp47feb02_init_ctrl_regs() warn: subtract is higher precedence than shift
@ 2026-09-30 21:56 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-09-30 21:56 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

Unfiltered warning: this smatch report is sent as-is and has not been
reviewed for false positives, so please treat it with due skepticism.

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Ariana Lazar <ariana.lazar@microchip.com>
CC: Jonathan Cameron <jonathan.cameron@oss.qualcomm.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   6c2cb8b8b843d216ab549b678a0d8831c43153e0
commit: ddaf34392ce717d0edd7b0b0fafce1b4e0386321 [10545/12559] iio: dac: mcp47feb02: refactor MCP47FEB02 I2C driver into two modules
:::::: branch date: 8 hours ago
:::::: commit date: 2 days ago
config: sparc64-randconfig-r2201-20260930 (https://download.01.org/0day-ci/archive/20260930/202609302354.kv3fnDbV-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 12.5.0
smatch: v0.5.0-9187-g5189e3fb

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>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202609302354.kv3fnDbV-lkp@intel.com/

New smatch warnings:
drivers/iio/dac/mcp47feb02-core.c:833 mcp47feb02_init_ctrl_regs() warn: subtract is higher precedence than shift
drivers/iio/dac/mcp47feb02-core.c:833 mcp47feb02_init_ctrl_regs() warn: subtract is higher precedence than shift
drivers/iio/dac/mcp47feb02-core.c:833 mcp47feb02_init_ctrl_regs() warn: subtract is higher precedence than shift
drivers/iio/dac/mcp47feb02-core.c:833 mcp47feb02_init_ctrl_regs() warn: subtract is higher precedence than shift

Old smatch warnings:
drivers/iio/dac/mcp47feb02-core.c:877 mcp47feb02_init_ctrl_regs() warn: subtract is higher precedence than shift
drivers/iio/dac/mcp47feb02-core.c:877 mcp47feb02_init_ctrl_regs() warn: subtract is higher precedence than shift
drivers/iio/dac/mcp47feb02-core.c:877 mcp47feb02_init_ctrl_regs() warn: subtract is higher precedence than shift
drivers/iio/dac/mcp47feb02-core.c:877 mcp47feb02_init_ctrl_regs() warn: subtract is higher precedence than shift

vim +833 drivers/iio/dac/mcp47feb02-core.c

bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  806  
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  807  static int mcp47feb02_init_ctrl_regs(struct mcp47feb02_data *data)
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  808  {
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  809  	unsigned int i, vref_ch, gain_ch, pd_ch;
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  810  	int ret;
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  811  
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  812  	ret = regmap_read(data->regmap, MCP47FEB02_VREF_REG_ADDR, &vref_ch);
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  813  	if (ret)
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  814  		return ret;
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  815  
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  816  	ret = regmap_read(data->regmap, MCP47FEB02_GAIN_CTRL_STATUS_REG_ADDR, &gain_ch);
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  817  	if (ret)
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  818  		return ret;
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  819  
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  820  	ret = regmap_read(data->regmap, MCP47FEB02_POWER_DOWN_REG_ADDR, &pd_ch);
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  821  	if (ret)
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  822  		return ret;
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  823  
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  824  	for_each_set_bit(i, &data->active_channels_mask, data->phys_channels) {
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  825  		struct device *dev = regmap_get_device(data->regmap);
fc8d14d75345cb drivers/iio/dac/mcp47feb02.c Ariana Lazar 2026-09-18  826  		unsigned int pd_tmp, dac_val;
fc8d14d75345cb drivers/iio/dac/mcp47feb02.c Ariana Lazar 2026-09-18  827  
fc8d14d75345cb drivers/iio/dac/mcp47feb02.c Ariana Lazar 2026-09-18  828  		ret = regmap_read(data->regmap, REG_ADDR(i), &dac_val);
fc8d14d75345cb drivers/iio/dac/mcp47feb02.c Ariana Lazar 2026-09-18  829  		if (ret)
fc8d14d75345cb drivers/iio/dac/mcp47feb02.c Ariana Lazar 2026-09-18  830  			return ret;
fc8d14d75345cb drivers/iio/dac/mcp47feb02.c Ariana Lazar 2026-09-18  831  		data->chdata[i].dac_data = dac_val;
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  832  
b23f1a7ecdb5da drivers/iio/dac/mcp47feb02.c Ariana Lazar 2026-09-18 @833  		data->chdata[i].ref_mode = field_get(MCP47FEB02_VREF_PD_MASK(i), vref_ch);
29491c675c2bab drivers/iio/dac/mcp47feb02.c Ariana Lazar 2026-09-18  834  		data->chdata[i].use_2x_gain = field_get(DAC_GAIN_MASK(i), gain_ch);
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  835  
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  836  		/*
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  837  		 * Inform the user that the current voltage reference read from the volatile
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  838  		 * register of the chip is different from the one specified in the device tree.
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  839  		 * Considering that the user cannot have an external voltage reference connected
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  840  		 * to the pin and select the internal Band Gap at the same time, in order to avoid
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  841  		 * miscofiguring the reference voltage, the volatile register will not be written.
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  842  		 * In order to overwrite the setting from volatile register with the one from the
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  843  		 * device tree, the user needs to write the chosen scale.
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  844  		 */
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  845  		switch (data->chdata[i].ref_mode) {
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  846  		case MCP47FEB02_INTERNAL_BAND_GAP:
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  847  			if (data->phys_channels >= 4 && (i % 2) && data->use_vref1) {
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  848  				dev_dbg(dev, "ch[%u]: was configured to use internal band gap", i);
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  849  				dev_dbg(dev, "ch[%u]: reference voltage set to VREF1", i);
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  850  				break;
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  851  			}
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  852  			if ((data->phys_channels < 4 || (data->phys_channels >= 4 && !(i % 2))) &&
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  853  			    data->use_vref) {
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  854  				dev_dbg(dev, "ch[%u]: was configured to use internal band gap", i);
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  855  				dev_dbg(dev, "ch[%u]: reference voltage set to VREF", i);
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  856  				break;
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  857  			}
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  858  			break;
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  859  		case MCP47FEB02_EXTERNAL_VREF_UNBUFFERED:
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  860  		case MCP47FEB02_EXTERNAL_VREF_BUFFERED:
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  861  			if (data->phys_channels >= 4 && (i % 2) && !data->use_vref1) {
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  862  				dev_dbg(dev, "ch[%u]: was configured to use VREF1", i);
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  863  				dev_dbg(dev,
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  864  					"ch[%u]: reference voltage set to internal band gap", i);
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  865  				break;
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  866  			}
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  867  			if ((data->phys_channels < 4 || (data->phys_channels >= 4 && !(i % 2))) &&
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  868  			    !data->use_vref) {
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  869  				dev_dbg(dev, "ch[%u]: was configured to use VREF", i);
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  870  				dev_dbg(dev,
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  871  					"ch[%u]: reference voltage set to internal band gap", i);
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  872  				break;
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  873  			}
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  874  			break;
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  875  		}
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  876  
b23f1a7ecdb5da drivers/iio/dac/mcp47feb02.c Ariana Lazar 2026-09-18  877  		pd_tmp = field_get(MCP47FEB02_VREF_PD_MASK(i), pd_ch);
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  878  		data->chdata[i].powerdown_mode = pd_tmp ? (pd_tmp - 1) : pd_tmp;
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  879  		data->chdata[i].powerdown = !!(data->chdata[i].powerdown_mode);
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  880  	}
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  881  
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  882  	return 0;
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  883  }
bf394cc8036989 drivers/iio/dac/mcp47feb02.c Ariana Lazar 2025-12-16  884  

:::::: The code at line 833 was first introduced by commit
:::::: b23f1a7ecdb5da9ea0c19f70d67146eab84a2268 iio: dac: mcp47feb02: use field_prep() instead of custom dynamic macros

:::::: TO: Ariana Lazar <ariana.lazar@microchip.com>
:::::: CC: Jonathan Cameron <jonathan.cameron@oss.qualcomm.com>

--
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-09-30 21:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-30 21:56 [linux-next:master 10545/12559] drivers/iio/dac/mcp47feb02-core.c:833 mcp47feb02_init_ctrl_regs() warn: subtract is higher precedence than shift kernel test robot

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.