Hi, On Thu, May 27, 2021 at 12:30:00PM +0300, Dan Carpenter wrote: > tree: https://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git next > head: 6cf3b3abbf0b3b778138c0f8936aa7820af62cfc > commit: fb082cd59afa7fbd3a610e9835050675040b1b99 [2732/2735] Input: resistive-adc-touch - add support for z1 and z2 channels > config: x86_64-randconfig-m001-20210526 (attached as .config) > compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 > > If you fix the issue, kindly add following tag as appropriate > Reported-by: kernel test robot <lkp@xxxxxxxxx> > Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > > New smatch warnings: > drivers/input/touchscreen/resistive-adc-touch.c:84 grts_cb() error: uninitialized symbol 'z2'. > drivers/input/touchscreen/resistive-adc-touch.c:88 grts_cb() error: uninitialized symbol 'x'. > drivers/input/touchscreen/resistive-adc-touch.c:101 grts_cb() error: uninitialized symbol 'y'. > > Old smatch warnings: > drivers/input/touchscreen/resistive-adc-touch.c:101 grts_cb() error: uninitialized symbol 'x'. > drivers/input/touchscreen/resistive-adc-touch.c:109 grts_cb() error: uninitialized symbol 'y'. > > vim +/z2 +84 drivers/input/touchscreen/resistive-adc-touch.c > > aa132ffb6b0a18 Eugen Hristev 2018-05-22 56 static int grts_cb(const void *data, void *private) > aa132ffb6b0a18 Eugen Hristev 2018-05-22 57 { > aa132ffb6b0a18 Eugen Hristev 2018-05-22 58 const u16 *touch_info = data; > aa132ffb6b0a18 Eugen Hristev 2018-05-22 59 struct grts_state *st = private; > fb082cd59afa7f Oleksij Rempel 2021-05-25 60 unsigned int x, y, press = 0, z1 = 0, z2; > fb082cd59afa7f Oleksij Rempel 2021-05-25 61 unsigned int Rt, i; > aa132ffb6b0a18 Eugen Hristev 2018-05-22 62 > fb082cd59afa7f Oleksij Rempel 2021-05-25 63 for (i = 0; i < ARRAY_SIZE(st->ch) && st->ch[i] != GRTS_CH_NONE; i++) { > fb082cd59afa7f Oleksij Rempel 2021-05-25 64 switch (st->ch[i]) { > fb082cd59afa7f Oleksij Rempel 2021-05-25 65 case GRTS_CH_X: > fb082cd59afa7f Oleksij Rempel 2021-05-25 66 x = touch_info[i]; > fb082cd59afa7f Oleksij Rempel 2021-05-25 67 break; > fb082cd59afa7f Oleksij Rempel 2021-05-25 68 case GRTS_CH_Y: > fb082cd59afa7f Oleksij Rempel 2021-05-25 69 y = touch_info[i]; > fb082cd59afa7f Oleksij Rempel 2021-05-25 70 break; > fb082cd59afa7f Oleksij Rempel 2021-05-25 71 case GRTS_CH_PRESSURE: > fb082cd59afa7f Oleksij Rempel 2021-05-25 72 press = touch_info[i]; > fb082cd59afa7f Oleksij Rempel 2021-05-25 73 break; > fb082cd59afa7f Oleksij Rempel 2021-05-25 74 case GRTS_CH_Z1: > fb082cd59afa7f Oleksij Rempel 2021-05-25 75 z1 = touch_info[i]; > fb082cd59afa7f Oleksij Rempel 2021-05-25 76 break; > fb082cd59afa7f Oleksij Rempel 2021-05-25 77 case GRTS_CH_Z2: > fb082cd59afa7f Oleksij Rempel 2021-05-25 78 z2 = touch_info[i]; > fb082cd59afa7f Oleksij Rempel 2021-05-25 79 break; > fb082cd59afa7f Oleksij Rempel 2021-05-25 80 } > fb082cd59afa7f Oleksij Rempel 2021-05-25 81 } > fb082cd59afa7f Oleksij Rempel 2021-05-25 82 > fb082cd59afa7f Oleksij Rempel 2021-05-25 83 if (z1) { > fb082cd59afa7f Oleksij Rempel 2021-05-25 @84 Rt = z2; > > It's likely this is a false positive, but we can see why the static > checker would complain. The presence of this values was validated on probe. Do we really need extra set them to 0? > fb082cd59afa7f Oleksij Rempel 2021-05-25 85 Rt -= z1; > fb082cd59afa7f Oleksij Rempel 2021-05-25 86 Rt *= st->x_plate_ohms; > fb082cd59afa7f Oleksij Rempel 2021-05-25 87 Rt = DIV_ROUND_CLOSEST(Rt, 16); > fb082cd59afa7f Oleksij Rempel 2021-05-25 @88 Rt *= x; > fb082cd59afa7f Oleksij Rempel 2021-05-25 89 Rt /= z1; > fb082cd59afa7f Oleksij Rempel 2021-05-25 90 Rt = DIV_ROUND_CLOSEST(Rt, 256); > fb082cd59afa7f Oleksij Rempel 2021-05-25 91 /* > fb082cd59afa7f Oleksij Rempel 2021-05-25 92 * On increased pressure the resistance (Rt) is decreasing > fb082cd59afa7f Oleksij Rempel 2021-05-25 93 * so, convert values to make it looks as real pressure. > fb082cd59afa7f Oleksij Rempel 2021-05-25 94 */ > fb082cd59afa7f Oleksij Rempel 2021-05-25 95 if (Rt < GRTS_DEFAULT_PRESSURE_MAX) > fb082cd59afa7f Oleksij Rempel 2021-05-25 96 press = GRTS_DEFAULT_PRESSURE_MAX - Rt; > fb082cd59afa7f Oleksij Rempel 2021-05-25 97 else > fb082cd59afa7f Oleksij Rempel 2021-05-25 98 press = 0; > fb082cd59afa7f Oleksij Rempel 2021-05-25 99 } > aa132ffb6b0a18 Eugen Hristev 2018-05-22 100 > aa132ffb6b0a18 Eugen Hristev 2018-05-22 @101 if ((!x && !y) || (st->pressure && (press < st->pressure_min))) { > aa132ffb6b0a18 Eugen Hristev 2018-05-22 102 /* report end of touch */ > aa132ffb6b0a18 Eugen Hristev 2018-05-22 103 input_report_key(st->input, BTN_TOUCH, 0); > aa132ffb6b0a18 Eugen Hristev 2018-05-22 104 input_sync(st->input); > aa132ffb6b0a18 Eugen Hristev 2018-05-22 105 return 0; > aa132ffb6b0a18 Eugen Hristev 2018-05-22 106 } > aa132ffb6b0a18 Eugen Hristev 2018-05-22 107 > aa132ffb6b0a18 Eugen Hristev 2018-05-22 108 /* report proper touch to subsystem*/ > aa132ffb6b0a18 Eugen Hristev 2018-05-22 109 touchscreen_report_pos(st->input, &st->prop, x, y, false); > aa132ffb6b0a18 Eugen Hristev 2018-05-22 110 if (st->pressure) > aa132ffb6b0a18 Eugen Hristev 2018-05-22 111 input_report_abs(st->input, ABS_PRESSURE, press); > aa132ffb6b0a18 Eugen Hristev 2018-05-22 112 input_report_key(st->input, BTN_TOUCH, 1); > aa132ffb6b0a18 Eugen Hristev 2018-05-22 113 input_sync(st->input); > aa132ffb6b0a18 Eugen Hristev 2018-05-22 114 > aa132ffb6b0a18 Eugen Hristev 2018-05-22 115 return 0; > aa132ffb6b0a18 Eugen Hristev 2018-05-22 116 } > > --- > 0-DAY CI Kernel Test Service, Intel Corporation > https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx > > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |