From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: [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'
Date: Thu, 09 Jul 2026 13:59:34 +0800 [thread overview]
Message-ID: <202607091344.tyIUh9ZX-lkp@intel.com> (raw)
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
reply other threads:[~2026-07-09 6:00 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=202607091344.tyIUh9ZX-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/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