drivers/input/touchscreen/elants_i2c.c:859:45: warning: Clarify calculation precedence for '&' and

From: kernel test robot
Date: Sat Aug 01 2020 - 18:57:11 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: d52daa8620c65960e1ef882adc1f92061326bd7a
commit: f27ad8932725f8dd0cd1a46763de4a40377b1ae6 Input: elants_i2c - support palm detection
date: 4 months ago
compiler: xtensa-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>


cppcheck warnings: (new ones prefixed by >>)

>> drivers/input/touchscreen/elants_i2c.c:859:45: warning: Clarify calculation precedence for '&' and '?'. [clarifyCalculation]
tool_type = buf[FW_POS_TOOL_TYPE] & BIT(0) ?
^

vim +859 drivers/input/touchscreen/elants_i2c.c

838
839 /*
840 * Event reporting.
841 */
842
843 static void elants_i2c_mt_event(struct elants_data *ts, u8 *buf)
844 {
845 struct input_dev *input = ts->input;
846 unsigned int n_fingers;
847 unsigned int tool_type;
848 u16 finger_state;
849 int i;
850
851 n_fingers = buf[FW_POS_STATE + 1] & 0x0f;
852 finger_state = ((buf[FW_POS_STATE + 1] & 0x30) << 4) |
853 buf[FW_POS_STATE];
854
855 dev_dbg(&ts->client->dev,
856 "n_fingers: %u, state: %04x\n", n_fingers, finger_state);
857
858 /* Note: all fingers have the same tool type */
> 859 tool_type = buf[FW_POS_TOOL_TYPE] & BIT(0) ?
860 MT_TOOL_FINGER : MT_TOOL_PALM;
861
862 for (i = 0; i < MAX_CONTACT_NUM && n_fingers; i++) {
863 if (finger_state & 1) {
864 unsigned int x, y, p, w;
865 u8 *pos;
866
867 pos = &buf[FW_POS_XY + i * 3];
868 x = (((u16)pos[0] & 0xf0) << 4) | pos[1];
869 y = (((u16)pos[0] & 0x0f) << 8) | pos[2];
870 p = buf[FW_POS_PRESSURE + i];
871 w = buf[FW_POS_WIDTH + i];
872
873 dev_dbg(&ts->client->dev, "i=%d x=%d y=%d p=%d w=%d\n",
874 i, x, y, p, w);
875
876 input_mt_slot(input, i);
877 input_mt_report_slot_state(input, tool_type, true);
878 input_event(input, EV_ABS, ABS_MT_POSITION_X, x);
879 input_event(input, EV_ABS, ABS_MT_POSITION_Y, y);
880 input_event(input, EV_ABS, ABS_MT_PRESSURE, p);
881 input_event(input, EV_ABS, ABS_MT_TOUCH_MAJOR, w);
882
883 n_fingers--;
884 }
885
886 finger_state >>= 1;
887 }
888
889 input_mt_sync_frame(input);
890 input_sync(input);
891 }
892

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx