* [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'
@ 2026-07-09 5:59 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-07-09 5:59 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: cros-kernel-buildreports@googlegroups.com
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/202607091344.tyIUh9ZX-lkp@intel.com/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 <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202607091344.tyIUh9ZX-lkp@intel.com/
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
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-07-09 6:00 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-09 5:59 [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
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.