* [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.