[android-common:android14-kiwi-6.1 180/180] drivers/i2c/busses/i2c-pxa.c:1364 i2c_pxa_init_recovery() warn: passing zero to 'PTR_ERR'
kernel test robot <[email protected]>
| Newsgroups | dev.linux.lists.oe-kbuild |
|---|---|
| Message-ID | <[email protected]> |
BCC: [email protected] CC: [email protected] TO: [email protected] tree: https://android.googlesource.com/kernel/common android14-kiwi-6.1 head: 7b80053b707666e258e504127dd1bf5ac555f5e1 commit: b3fd9db79e30d5eb5f76ef1f5b7e4f444af574ea [180/180] Revert "i2c: pxa: move to generic GPIO recovery" :::::: branch date: 2 days ago :::::: commit date: 2 years, 7 months ago config: i386-randconfig-141-20260708 (https://download.01.org/0day-ci/archive/20260709/[email protected]/config) compiler: gcc-14 (Debian 14.2.0-19) 14.2.0 smatch: v0.5.0-9185-gbcc58b9c 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 <[email protected]> | Reported-by: Dan Carpenter <[email protected]> | Closes: https://lore.kernel.org/r/[email protected]/ smatch warnings: drivers/i2c/busses/i2c-pxa.c:1364 i2c_pxa_init_recovery() warn: passing zero to 'PTR_ERR' drivers/i2c/busses/i2c-pxa.c:1364 i2c_pxa_init_recovery() warn: passing zero to 'PTR_ERR' vim +/PTR_ERR +1364 drivers/i2c/busses/i2c-pxa.c 7c9ec2c5251851 Russell King 2020-05-13 1335 7c9ec2c5251851 Russell King 2020-05-13 1336 static int i2c_pxa_init_recovery(struct pxa_i2c *i2c) 7c9ec2c5251851 Russell King 2020-05-13 1337 { 7c9ec2c5251851 Russell King 2020-05-13 1338 struct i2c_bus_recovery_info *bri = &i2c->recovery; 7c9ec2c5251851 Russell King 2020-05-13 1339 struct device *dev = i2c->adap.dev.parent; 7c9ec2c5251851 Russell King 2020-05-13 1340 7c9ec2c5251851 Russell King 2020-05-13 1341 /* 7c9ec2c5251851 Russell King 2020-05-13 1342 * When slave mode is enabled, we are not the only master on the bus. 7c9ec2c5251851 Russell King 2020-05-13 1343 * Bus recovery can only be performed when we are the master, which 7c9ec2c5251851 Russell King 2020-05-13 1344 * we can't be certain of. Therefore, when slave mode is enabled, do 7c9ec2c5251851 Russell King 2020-05-13 1345 * not configure bus recovery. 7c9ec2c5251851 Russell King 2020-05-13 1346 */ 7c9ec2c5251851 Russell King 2020-05-13 1347 if (IS_ENABLED(CONFIG_I2C_PXA_SLAVE)) 7c9ec2c5251851 Russell King 2020-05-13 1348 return 0; 7c9ec2c5251851 Russell King 2020-05-13 1349 b3fd9db79e30d5 Robert Marko 2023-11-10 1350 i2c->pinctrl = devm_pinctrl_get(dev); b3fd9db79e30d5 Robert Marko 2023-11-10 1351 if (PTR_ERR(i2c->pinctrl) == -ENODEV) b3fd9db79e30d5 Robert Marko 2023-11-10 1352 i2c->pinctrl = NULL; b3fd9db79e30d5 Robert Marko 2023-11-10 1353 if (IS_ERR(i2c->pinctrl)) b3fd9db79e30d5 Robert Marko 2023-11-10 1354 return PTR_ERR(i2c->pinctrl); b3fd9db79e30d5 Robert Marko 2023-11-10 1355 b3fd9db79e30d5 Robert Marko 2023-11-10 1356 if (!i2c->pinctrl) b3fd9db79e30d5 Robert Marko 2023-11-10 1357 return 0; b3fd9db79e30d5 Robert Marko 2023-11-10 1358 b3fd9db79e30d5 Robert Marko 2023-11-10 1359 i2c->pinctrl_default = pinctrl_lookup_state(i2c->pinctrl, b3fd9db79e30d5 Robert Marko 2023-11-10 1360 PINCTRL_STATE_DEFAULT); b3fd9db79e30d5 Robert Marko 2023-11-10 1361 i2c->pinctrl_recovery = pinctrl_lookup_state(i2c->pinctrl, "recovery"); b3fd9db79e30d5 Robert Marko 2023-11-10 1362 b3fd9db79e30d5 Robert Marko 2023-11-10 1363 if (IS_ERR(i2c->pinctrl_default) || IS_ERR(i2c->pinctrl_recovery)) { b3fd9db79e30d5 Robert Marko 2023-11-10 @1364 dev_info(dev, "missing pinmux recovery information: %ld %ld\n", b3fd9db79e30d5 Robert Marko 2023-11-10 1365 PTR_ERR(i2c->pinctrl_default), b3fd9db79e30d5 Robert Marko 2023-11-10 1366 PTR_ERR(i2c->pinctrl_recovery)); b3fd9db79e30d5 Robert Marko 2023-11-10 1367 return 0; b3fd9db79e30d5 Robert Marko 2023-11-10 1368 } b3fd9db79e30d5 Robert Marko 2023-11-10 1369 b3fd9db79e30d5 Robert Marko 2023-11-10 1370 /* b3fd9db79e30d5 Robert Marko 2023-11-10 1371 * Claiming GPIOs can influence the pinmux state, and may glitch the b3fd9db79e30d5 Robert Marko 2023-11-10 1372 * I2C bus. Do this carefully. b3fd9db79e30d5 Robert Marko 2023-11-10 1373 */ b3fd9db79e30d5 Robert Marko 2023-11-10 1374 bri->scl_gpiod = devm_gpiod_get(dev, "scl", GPIOD_OUT_HIGH_OPEN_DRAIN); b3fd9db79e30d5 Robert Marko 2023-11-10 1375 if (bri->scl_gpiod == ERR_PTR(-EPROBE_DEFER)) b3fd9db79e30d5 Robert Marko 2023-11-10 1376 return -EPROBE_DEFER; b3fd9db79e30d5 Robert Marko 2023-11-10 1377 if (IS_ERR(bri->scl_gpiod)) { b3fd9db79e30d5 Robert Marko 2023-11-10 1378 dev_info(dev, "missing scl gpio recovery information: %pe\n", b3fd9db79e30d5 Robert Marko 2023-11-10 1379 bri->scl_gpiod); b3fd9db79e30d5 Robert Marko 2023-11-10 1380 return 0; b3fd9db79e30d5 Robert Marko 2023-11-10 1381 } b3fd9db79e30d5 Robert Marko 2023-11-10 1382 b3fd9db79e30d5 Robert Marko 2023-11-10 1383 /* b3fd9db79e30d5 Robert Marko 2023-11-10 1384 * We have SCL. Pull SCL low and wait a bit so that SDA glitches b3fd9db79e30d5 Robert Marko 2023-11-10 1385 * have no effect. b3fd9db79e30d5 Robert Marko 2023-11-10 1386 */ b3fd9db79e30d5 Robert Marko 2023-11-10 1387 gpiod_direction_output(bri->scl_gpiod, 0); b3fd9db79e30d5 Robert Marko 2023-11-10 1388 udelay(10); b3fd9db79e30d5 Robert Marko 2023-11-10 1389 bri->sda_gpiod = devm_gpiod_get(dev, "sda", GPIOD_OUT_HIGH_OPEN_DRAIN); b3fd9db79e30d5 Robert Marko 2023-11-10 1390 b3fd9db79e30d5 Robert Marko 2023-11-10 1391 /* Wait a bit in case of a SDA glitch, and then release SCL. */ b3fd9db79e30d5 Robert Marko 2023-11-10 1392 udelay(10); b3fd9db79e30d5 Robert Marko 2023-11-10 1393 gpiod_direction_output(bri->scl_gpiod, 1); b3fd9db79e30d5 Robert Marko 2023-11-10 1394 b3fd9db79e30d5 Robert Marko 2023-11-10 1395 if (bri->sda_gpiod == ERR_PTR(-EPROBE_DEFER)) b3fd9db79e30d5 Robert Marko 2023-11-10 1396 return -EPROBE_DEFER; b3fd9db79e30d5 Robert Marko 2023-11-10 1397 b3fd9db79e30d5 Robert Marko 2023-11-10 1398 if (IS_ERR(bri->sda_gpiod)) { b3fd9db79e30d5 Robert Marko 2023-11-10 1399 dev_info(dev, "missing sda gpio recovery information: %pe\n", b3fd9db79e30d5 Robert Marko 2023-11-10 1400 bri->sda_gpiod); 7c9ec2c5251851 Russell King 2020-05-13 1401 return 0; 7c9ec2c5251851 Russell King 2020-05-13 1402 } 7c9ec2c5251851 Russell King 2020-05-13 1403 7c9ec2c5251851 Russell King 2020-05-13 1404 bri->prepare_recovery = i2c_pxa_prepare_recovery; 7c9ec2c5251851 Russell King 2020-05-13 1405 bri->unprepare_recovery = i2c_pxa_unprepare_recovery; b3fd9db79e30d5 Robert Marko 2023-11-10 1406 bri->recover_bus = i2c_generic_scl_recovery; 7c9ec2c5251851 Russell King 2020-05-13 1407 7c9ec2c5251851 Russell King 2020-05-13 1408 i2c->adap.bus_recovery_info = bri; 7c9ec2c5251851 Russell King 2020-05-13 1409 b3fd9db79e30d5 Robert Marko 2023-11-10 1410 /* b3fd9db79e30d5 Robert Marko 2023-11-10 1411 * Claiming GPIOs can change the pinmux state, which confuses the b3fd9db79e30d5 Robert Marko 2023-11-10 1412 * pinctrl since pinctrl's idea of the current setting is unaffected b3fd9db79e30d5 Robert Marko 2023-11-10 1413 * by the pinmux change caused by claiming the GPIO. Work around that b3fd9db79e30d5 Robert Marko 2023-11-10 1414 * by switching pinctrl to the GPIO state here. We do it this way to b3fd9db79e30d5 Robert Marko 2023-11-10 1415 * avoid glitching the I2C bus. b3fd9db79e30d5 Robert Marko 2023-11-10 1416 */ b3fd9db79e30d5 Robert Marko 2023-11-10 1417 pinctrl_select_state(i2c->pinctrl, i2c->pinctrl_recovery); b3fd9db79e30d5 Robert Marko 2023-11-10 1418 b3fd9db79e30d5 Robert Marko 2023-11-10 1419 return pinctrl_select_state(i2c->pinctrl, i2c->pinctrl_default); 7c9ec2c5251851 Russell King 2020-05-13 1420 } 7c9ec2c5251851 Russell King 2020-05-13 1421 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki