Messages in this thread | | | Date | Tue, 27 Sep 2022 11:44:37 +0300 | From | Dan Carpenter <> | Subject | [jic23-iio:testing 55/63] drivers/iio/adc/mcp3911.c:441 mcp3911_probe() warn: passing zero to 'PTR_ERR' |
| |
tree: https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git testing head: df957373c1649c74b78bf2fcfd144f0c3baa68a5 commit: 08a65f61db69ae4850c3c15e8fbe6293a09a998d [55/63] iio: adc: mcp3911: add support for interrupts config: openrisc-randconfig-m041-20220926 compiler: or1k-linux-gcc (GCC) 12.1.0
If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> | Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings: drivers/iio/adc/mcp3911.c:441 mcp3911_probe() warn: passing zero to 'PTR_ERR'
vim +/PTR_ERR +441 drivers/iio/adc/mcp3911.c
3a89b289df5df4 Marcus Folkesson 2018-08-08 366 static int mcp3911_probe(struct spi_device *spi) 3a89b289df5df4 Marcus Folkesson 2018-08-08 367 { 3a89b289df5df4 Marcus Folkesson 2018-08-08 368 struct iio_dev *indio_dev; 3a89b289df5df4 Marcus Folkesson 2018-08-08 369 struct mcp3911 *adc; 3a89b289df5df4 Marcus Folkesson 2018-08-08 370 int ret; 3a89b289df5df4 Marcus Folkesson 2018-08-08 371 3a89b289df5df4 Marcus Folkesson 2018-08-08 372 indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*adc)); 3a89b289df5df4 Marcus Folkesson 2018-08-08 373 if (!indio_dev) 3a89b289df5df4 Marcus Folkesson 2018-08-08 374 return -ENOMEM; 3a89b289df5df4 Marcus Folkesson 2018-08-08 375 3a89b289df5df4 Marcus Folkesson 2018-08-08 376 adc = iio_priv(indio_dev); 3a89b289df5df4 Marcus Folkesson 2018-08-08 377 adc->spi = spi; 3a89b289df5df4 Marcus Folkesson 2018-08-08 378 3a89b289df5df4 Marcus Folkesson 2018-08-08 379 adc->vref = devm_regulator_get_optional(&adc->spi->dev, "vref"); 3a89b289df5df4 Marcus Folkesson 2018-08-08 380 if (IS_ERR(adc->vref)) { 3a89b289df5df4 Marcus Folkesson 2018-08-08 381 if (PTR_ERR(adc->vref) == -ENODEV) { 3a89b289df5df4 Marcus Folkesson 2018-08-08 382 adc->vref = NULL; 3a89b289df5df4 Marcus Folkesson 2018-08-08 383 } else { 3a89b289df5df4 Marcus Folkesson 2018-08-08 384 dev_err(&adc->spi->dev, 3a89b289df5df4 Marcus Folkesson 2018-08-08 385 "failed to get regulator (%ld)\n", 3a89b289df5df4 Marcus Folkesson 2018-08-08 386 PTR_ERR(adc->vref)); 3a89b289df5df4 Marcus Folkesson 2018-08-08 387 return PTR_ERR(adc->vref); 3a89b289df5df4 Marcus Folkesson 2018-08-08 388 } 3a89b289df5df4 Marcus Folkesson 2018-08-08 389 3a89b289df5df4 Marcus Folkesson 2018-08-08 390 } else { 3a89b289df5df4 Marcus Folkesson 2018-08-08 391 ret = regulator_enable(adc->vref); 3a89b289df5df4 Marcus Folkesson 2018-08-08 392 if (ret) 3a89b289df5df4 Marcus Folkesson 2018-08-08 393 return ret; 0e0a07adaff971 Marcus Folkesson 2022-08-15 394 0e0a07adaff971 Marcus Folkesson 2022-08-15 395 ret = devm_add_action_or_reset(&spi->dev, 0e0a07adaff971 Marcus Folkesson 2022-08-15 396 mcp3911_cleanup_regulator, adc->vref); 0e0a07adaff971 Marcus Folkesson 2022-08-15 397 if (ret) 0e0a07adaff971 Marcus Folkesson 2022-08-15 398 return ret; 3a89b289df5df4 Marcus Folkesson 2018-08-08 399 } 3a89b289df5df4 Marcus Folkesson 2018-08-08 400 0e0a07adaff971 Marcus Folkesson 2022-08-15 401 adc->clki = devm_clk_get_enabled(&adc->spi->dev, NULL); 3a89b289df5df4 Marcus Folkesson 2018-08-08 402 if (IS_ERR(adc->clki)) { 3a89b289df5df4 Marcus Folkesson 2018-08-08 403 if (PTR_ERR(adc->clki) == -ENOENT) { 3a89b289df5df4 Marcus Folkesson 2018-08-08 404 adc->clki = NULL; 3a89b289df5df4 Marcus Folkesson 2018-08-08 405 } else { 3a89b289df5df4 Marcus Folkesson 2018-08-08 406 dev_err(&adc->spi->dev, 3a89b289df5df4 Marcus Folkesson 2018-08-08 407 "failed to get adc clk (%ld)\n", 3a89b289df5df4 Marcus Folkesson 2018-08-08 408 PTR_ERR(adc->clki)); 0e0a07adaff971 Marcus Folkesson 2022-08-15 409 return PTR_ERR(adc->clki); 3a89b289df5df4 Marcus Folkesson 2018-08-08 410 } 3a89b289df5df4 Marcus Folkesson 2018-08-08 411 } 3a89b289df5df4 Marcus Folkesson 2018-08-08 412 4efc1c614d3348 Jonathan Cameron 2021-12-05 413 ret = mcp3911_config(adc); 3a89b289df5df4 Marcus Folkesson 2018-08-08 414 if (ret) 0e0a07adaff971 Marcus Folkesson 2022-08-15 415 return ret; 3a89b289df5df4 Marcus Folkesson 2018-08-08 416 08a65f61db69ae Marcus Folkesson 2022-08-15 417 if (device_property_read_bool(&adc->spi->dev, "microchip,data-ready-hiz")) 08a65f61db69ae Marcus Folkesson 2022-08-15 418 ret = mcp3911_update(adc, MCP3911_REG_STATUSCOM, MCP3911_STATUSCOM_DRHIZ, 08a65f61db69ae Marcus Folkesson 2022-08-15 419 0, 2); 08a65f61db69ae Marcus Folkesson 2022-08-15 420 else 08a65f61db69ae Marcus Folkesson 2022-08-15 421 ret = mcp3911_update(adc, MCP3911_REG_STATUSCOM, MCP3911_STATUSCOM_DRHIZ, 08a65f61db69ae Marcus Folkesson 2022-08-15 422 MCP3911_STATUSCOM_DRHIZ, 2); 08a65f61db69ae Marcus Folkesson 2022-08-15 423 if (ret) 08a65f61db69ae Marcus Folkesson 2022-08-15 424 return ret; 08a65f61db69ae Marcus Folkesson 2022-08-15 425 3a89b289df5df4 Marcus Folkesson 2018-08-08 426 indio_dev->name = spi_get_device_id(spi)->name; 3a89b289df5df4 Marcus Folkesson 2018-08-08 427 indio_dev->modes = INDIO_DIRECT_MODE; 3a89b289df5df4 Marcus Folkesson 2018-08-08 428 indio_dev->info = &mcp3911_info; 3a89b289df5df4 Marcus Folkesson 2018-08-08 429 spi_set_drvdata(spi, indio_dev); 3a89b289df5df4 Marcus Folkesson 2018-08-08 430 3a89b289df5df4 Marcus Folkesson 2018-08-08 431 indio_dev->channels = mcp3911_channels; 3a89b289df5df4 Marcus Folkesson 2018-08-08 432 indio_dev->num_channels = ARRAY_SIZE(mcp3911_channels); 3a89b289df5df4 Marcus Folkesson 2018-08-08 433 3a89b289df5df4 Marcus Folkesson 2018-08-08 434 mutex_init(&adc->lock); 3a89b289df5df4 Marcus Folkesson 2018-08-08 435 08a65f61db69ae Marcus Folkesson 2022-08-15 436 if (spi->irq > 0) { 08a65f61db69ae Marcus Folkesson 2022-08-15 437 adc->trig = devm_iio_trigger_alloc(&spi->dev, "%s-dev%d", 08a65f61db69ae Marcus Folkesson 2022-08-15 438 indio_dev->name, 08a65f61db69ae Marcus Folkesson 2022-08-15 439 iio_device_id(indio_dev)); 08a65f61db69ae Marcus Folkesson 2022-08-15 440 if (!adc->trig) 08a65f61db69ae Marcus Folkesson 2022-08-15 @441 return PTR_ERR(adc->trig);
This is return 0; It should be return -ENOMEM;
08a65f61db69ae Marcus Folkesson 2022-08-15 442 08a65f61db69ae Marcus Folkesson 2022-08-15 443 adc->trig->ops = &mcp3911_trigger_ops; 08a65f61db69ae Marcus Folkesson 2022-08-15 444 iio_trigger_set_drvdata(adc->trig, adc); 08a65f61db69ae Marcus Folkesson 2022-08-15 445 ret = devm_iio_trigger_register(&spi->dev, adc->trig); 08a65f61db69ae Marcus Folkesson 2022-08-15 446 if (ret) 08a65f61db69ae Marcus Folkesson 2022-08-15 447 return ret; 08a65f61db69ae Marcus Folkesson 2022-08-15 448 08a65f61db69ae Marcus Folkesson 2022-08-15 449 /* 08a65f61db69ae Marcus Folkesson 2022-08-15 450 * The device generates interrupts as long as it is powered up. 08a65f61db69ae Marcus Folkesson 2022-08-15 451 * Some platforms might not allow the option to power it down so 08a65f61db69ae Marcus Folkesson 2022-08-15 452 * don't enable the interrupt to avoid extra load on the system. 08a65f61db69ae Marcus Folkesson 2022-08-15 453 */ 08a65f61db69ae Marcus Folkesson 2022-08-15 454 ret = devm_request_irq(&spi->dev, spi->irq, 08a65f61db69ae Marcus Folkesson 2022-08-15 455 &iio_trigger_generic_data_rdy_poll, IRQF_NO_AUTOEN | IRQF_ONESHOT, 08a65f61db69ae Marcus Folkesson 2022-08-15 456 indio_dev->name, adc->trig); 08a65f61db69ae Marcus Folkesson 2022-08-15 457 if (ret) 08a65f61db69ae Marcus Folkesson 2022-08-15 458 return ret; 08a65f61db69ae Marcus Folkesson 2022-08-15 459 } 08a65f61db69ae Marcus Folkesson 2022-08-15 460 5db9f38d394f12 Marcus Folkesson 2022-08-15 461 ret = devm_iio_triggered_buffer_setup(&spi->dev, indio_dev, 5db9f38d394f12 Marcus Folkesson 2022-08-15 462 NULL, 5db9f38d394f12 Marcus Folkesson 2022-08-15 463 mcp3911_trigger_handler, NULL); 5db9f38d394f12 Marcus Folkesson 2022-08-15 464 if (ret) 5db9f38d394f12 Marcus Folkesson 2022-08-15 465 return ret; 5db9f38d394f12 Marcus Folkesson 2022-08-15 466 0e0a07adaff971 Marcus Folkesson 2022-08-15 467 return devm_iio_device_register(&adc->spi->dev, indio_dev); 3a89b289df5df4 Marcus Folkesson 2018-08-08 468 }
| |