From: Dan Carpenter <error27@gmail.com>
To: oe-kbuild@lists.linux.dev,
Benjamin Mugnier <benjamin.mugnier@foss.st.com>
Cc: lkp@intel.com, oe-kbuild-all@lists.linux.dev,
linux-media@vger.kernel.org,
Sakari Ailus <sakari.ailus@linux.intel.com>
Subject: [sailus-media-tree:master 17/47] drivers/media/i2c/st-vgxy61.c:891 vgxy61_apply_gpiox_strobe_mode() warn: impossible condition '(reg < 0) => (0-u16max < 0)'
Date: Wed, 9 Nov 2022 08:19:12 +0300 [thread overview]
Message-ID: <202211091255.jCcREh11-lkp@intel.com> (raw)
tree: git://linuxtv.org/sailus/media_tree.git master
head: 7336c54a562b479866d2de2abc61487a4e07b0b9
commit: 153e4ad44d605cbff3530013b393c01462c54cef [17/47] media: i2c: Add driver for ST VGXY61 camera sensor
config: microblaze-randconfig-m041-20221109
compiler: microblaze-linux-gcc (GCC) 12.1.0
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
smatch warnings:
drivers/media/i2c/st-vgxy61.c:891 vgxy61_apply_gpiox_strobe_mode() warn: impossible condition '(reg < 0) => (0-u16max < 0)'
drivers/media/i2c/st-vgxy61.c:1037 vgxy61_update_exposure() error: uninitialized symbol 'expo_long_max'.
drivers/media/i2c/st-vgxy61.c:1190 vgxy61_stream_enable() warn: pm_runtime_get_sync() also returns 1 on success
drivers/media/i2c/st-vgxy61.c:1579 vgxy61_configure() warn: impossible condition '(line_length < 0) => (0-u16max < 0)'
drivers/media/i2c/st-vgxy61.c:1626 vgxy61_patch() warn: impossible condition '(patch < 0) => (0-u16max < 0)'
drivers/media/i2c/st-vgxy61.c:1651 vgxy61_detect_cut_version() warn: impossible condition '(device_rev < 0) => (0-u16max < 0)'
drivers/media/i2c/st-vgxy61.c:1679 vgxy61_detect() warn: impossible condition '(id < 0) => (0-u16max < 0)'
drivers/media/i2c/st-vgxy61.c:1694 vgxy61_detect() warn: impossible condition '(st < 0) => (0-255 < 0)'
vim +891 drivers/media/i2c/st-vgxy61.c
153e4ad44d605c Benjamin Mugnier 2022-10-11 883 static int vgxy61_apply_gpiox_strobe_mode(struct vgxy61_dev *sensor,
153e4ad44d605c Benjamin Mugnier 2022-10-11 884 enum vgxy61_strobe_mode mode,
153e4ad44d605c Benjamin Mugnier 2022-10-11 885 unsigned int idx)
153e4ad44d605c Benjamin Mugnier 2022-10-11 886 {
153e4ad44d605c Benjamin Mugnier 2022-10-11 887 static const u8 index2val[] = {0x0, 0x1, 0x3};
153e4ad44d605c Benjamin Mugnier 2022-10-11 888 u16 reg;
153e4ad44d605c Benjamin Mugnier 2022-10-11 889
153e4ad44d605c Benjamin Mugnier 2022-10-11 890 reg = vgxy61_read_reg(sensor, VGXY61_REG_SIGNALS_CTRL);
153e4ad44d605c Benjamin Mugnier 2022-10-11 @891 if (reg < 0)
153e4ad44d605c Benjamin Mugnier 2022-10-11 892 return reg;
"reg" should be an int.
153e4ad44d605c Benjamin Mugnier 2022-10-11 893 reg &= ~(0xf << (idx * VGXY61_SIGNALS_GPIO_ID_SHIFT));
153e4ad44d605c Benjamin Mugnier 2022-10-11 894 reg |= index2val[mode] << (idx * VGXY61_SIGNALS_GPIO_ID_SHIFT);
153e4ad44d605c Benjamin Mugnier 2022-10-11 895
153e4ad44d605c Benjamin Mugnier 2022-10-11 896 return vgxy61_write_reg(sensor, VGXY61_REG_SIGNALS_CTRL, reg, NULL);
153e4ad44d605c Benjamin Mugnier 2022-10-11 897 }
[ snip ]
153e4ad44d605c Benjamin Mugnier 2022-10-11 984 static int vgxy61_update_exposure(struct vgxy61_dev *sensor, u16 new_expo_long,
153e4ad44d605c Benjamin Mugnier 2022-10-11 985 enum vgxy61_hdr_mode hdr)
153e4ad44d605c Benjamin Mugnier 2022-10-11 986 {
153e4ad44d605c Benjamin Mugnier 2022-10-11 987 struct i2c_client *client = sensor->i2c_client;
153e4ad44d605c Benjamin Mugnier 2022-10-11 988 u16 new_expo_short = 0;
153e4ad44d605c Benjamin Mugnier 2022-10-11 989 u16 expo_short_max = 0;
153e4ad44d605c Benjamin Mugnier 2022-10-11 990 u16 expo_long_min = VGXY61_MIN_EXPOSURE;
153e4ad44d605c Benjamin Mugnier 2022-10-11 991 u16 expo_long_max;
153e4ad44d605c Benjamin Mugnier 2022-10-11 992
153e4ad44d605c Benjamin Mugnier 2022-10-11 993 /* Compute short exposure according to hdr mode and long exposure */
153e4ad44d605c Benjamin Mugnier 2022-10-11 994 switch (hdr) {
153e4ad44d605c Benjamin Mugnier 2022-10-11 995 case VGXY61_HDR_LINEAR:
153e4ad44d605c Benjamin Mugnier 2022-10-11 996 /*
153e4ad44d605c Benjamin Mugnier 2022-10-11 997 * Take ratio into account for minimal exposures in
153e4ad44d605c Benjamin Mugnier 2022-10-11 998 * VGXY61_HDR_LINEAR
153e4ad44d605c Benjamin Mugnier 2022-10-11 999 */
153e4ad44d605c Benjamin Mugnier 2022-10-11 1000 expo_long_min = VGXY61_MIN_EXPOSURE * VGXY61_HDR_LINEAR_RATIO;
153e4ad44d605c Benjamin Mugnier 2022-10-11 1001 new_expo_long = max(expo_long_min, new_expo_long);
153e4ad44d605c Benjamin Mugnier 2022-10-11 1002
153e4ad44d605c Benjamin Mugnier 2022-10-11 1003 expo_long_max =
153e4ad44d605c Benjamin Mugnier 2022-10-11 1004 vgxy61_get_expo_long_max(sensor,
153e4ad44d605c Benjamin Mugnier 2022-10-11 1005 VGXY61_HDR_LINEAR_RATIO);
153e4ad44d605c Benjamin Mugnier 2022-10-11 1006 expo_short_max = (expo_long_max +
153e4ad44d605c Benjamin Mugnier 2022-10-11 1007 (VGXY61_HDR_LINEAR_RATIO / 2)) /
153e4ad44d605c Benjamin Mugnier 2022-10-11 1008 VGXY61_HDR_LINEAR_RATIO;
153e4ad44d605c Benjamin Mugnier 2022-10-11 1009 new_expo_short = (new_expo_long +
153e4ad44d605c Benjamin Mugnier 2022-10-11 1010 (VGXY61_HDR_LINEAR_RATIO / 2)) /
153e4ad44d605c Benjamin Mugnier 2022-10-11 1011 VGXY61_HDR_LINEAR_RATIO;
153e4ad44d605c Benjamin Mugnier 2022-10-11 1012 break;
153e4ad44d605c Benjamin Mugnier 2022-10-11 1013 case VGXY61_HDR_SUB:
153e4ad44d605c Benjamin Mugnier 2022-10-11 1014 new_expo_long = max(expo_long_min, new_expo_long);
153e4ad44d605c Benjamin Mugnier 2022-10-11 1015
153e4ad44d605c Benjamin Mugnier 2022-10-11 1016 expo_long_max = vgxy61_get_expo_long_max(sensor, 1);
153e4ad44d605c Benjamin Mugnier 2022-10-11 1017 /* Short and long are the same in VGXY61_HDR_SUB */
153e4ad44d605c Benjamin Mugnier 2022-10-11 1018 expo_short_max = expo_long_max;
153e4ad44d605c Benjamin Mugnier 2022-10-11 1019 new_expo_short = new_expo_long;
153e4ad44d605c Benjamin Mugnier 2022-10-11 1020 break;
153e4ad44d605c Benjamin Mugnier 2022-10-11 1021 case VGXY61_NO_HDR:
153e4ad44d605c Benjamin Mugnier 2022-10-11 1022 new_expo_long = max(expo_long_min, new_expo_long);
153e4ad44d605c Benjamin Mugnier 2022-10-11 1023
153e4ad44d605c Benjamin Mugnier 2022-10-11 1024 /*
153e4ad44d605c Benjamin Mugnier 2022-10-11 1025 * As short expo is 0 here, only the second rule of thumb
153e4ad44d605c Benjamin Mugnier 2022-10-11 1026 * applies, see vgxy61_get_expo_long_max for more
153e4ad44d605c Benjamin Mugnier 2022-10-11 1027 */
153e4ad44d605c Benjamin Mugnier 2022-10-11 1028 expo_long_max = sensor->frame_length - VGXY61_EXPOS_ROT_TERM;
153e4ad44d605c Benjamin Mugnier 2022-10-11 1029 break;
153e4ad44d605c Benjamin Mugnier 2022-10-11 1030 default:
153e4ad44d605c Benjamin Mugnier 2022-10-11 1031 /* Should never happen */
153e4ad44d605c Benjamin Mugnier 2022-10-11 1032 WARN_ON(true);
153e4ad44d605c Benjamin Mugnier 2022-10-11 1033 break;
This is what upsets the static checker.
153e4ad44d605c Benjamin Mugnier 2022-10-11 1034 }
153e4ad44d605c Benjamin Mugnier 2022-10-11 1035
153e4ad44d605c Benjamin Mugnier 2022-10-11 1036 /* If this happens, something is wrong with formulas */
153e4ad44d605c Benjamin Mugnier 2022-10-11 @1037 WARN_ON(expo_long_min > expo_long_max);
153e4ad44d605c Benjamin Mugnier 2022-10-11 1038
153e4ad44d605c Benjamin Mugnier 2022-10-11 1039 if (new_expo_long > expo_long_max) {
153e4ad44d605c Benjamin Mugnier 2022-10-11 1040 dev_warn(&client->dev, "Exposure %d too high, clamping to %d\n",
153e4ad44d605c Benjamin Mugnier 2022-10-11 1041 new_expo_long, expo_long_max);
153e4ad44d605c Benjamin Mugnier 2022-10-11 1042 new_expo_long = expo_long_max;
153e4ad44d605c Benjamin Mugnier 2022-10-11 1043 new_expo_short = expo_short_max;
153e4ad44d605c Benjamin Mugnier 2022-10-11 1044 }
153e4ad44d605c Benjamin Mugnier 2022-10-11 1045
153e4ad44d605c Benjamin Mugnier 2022-10-11 1046 sensor->expo_long = new_expo_long;
153e4ad44d605c Benjamin Mugnier 2022-10-11 1047 sensor->expo_short = new_expo_short;
153e4ad44d605c Benjamin Mugnier 2022-10-11 1048 sensor->expo_max = expo_long_max;
153e4ad44d605c Benjamin Mugnier 2022-10-11 1049 sensor->expo_min = expo_long_min;
153e4ad44d605c Benjamin Mugnier 2022-10-11 1050
153e4ad44d605c Benjamin Mugnier 2022-10-11 1051 if (sensor->streaming)
153e4ad44d605c Benjamin Mugnier 2022-10-11 1052 return vgxy61_apply_exposure(sensor);
153e4ad44d605c Benjamin Mugnier 2022-10-11 1053 return 0;
153e4ad44d605c Benjamin Mugnier 2022-10-11 1054 }
--
0-DAY CI Kernel Test Service
https://01.org/lkp
next reply other threads:[~2022-11-09 5:19 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-09 5:19 Dan Carpenter [this message]
2022-11-10 11:43 ` [sailus-media-tree:master 17/47] drivers/media/i2c/st-vgxy61.c:891 vgxy61_apply_gpiox_strobe_mode() warn: impossible condition '(reg < 0) => (0-u16max < 0)' Benjamin MUGNIER
2022-11-10 13:11 ` Dan Carpenter
2022-11-10 14:03 ` Dan Carpenter
2022-11-10 14:06 ` Dan Carpenter
2022-11-10 15:04 ` Benjamin MUGNIER
2022-11-10 15:33 ` Dan Carpenter
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=202211091255.jCcREh11-lkp@intel.com \
--to=error27@gmail.com \
--cc=benjamin.mugnier@foss.st.com \
--cc=linux-media@vger.kernel.org \
--cc=lkp@intel.com \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=oe-kbuild@lists.linux.dev \
--cc=sakari.ailus@linux.intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox