CC: kbuild-...@lists.01.org TO: Kishon Vijay Abraham I <kis...@ti.com> CC: Vignesh Raghavendra <vigne...@ti.com>
tree: git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git ti-linux-5.10.y head: 273179759172db821c14145ec1458ff926e0428b commit: d6c94541065433e99c45a5ba4280f2af08bd329a [3321/3368] PCI: j721e: Add support to provide refclk to PCIe connector :::::: branch date: 9 hours ago :::::: commit date: 7 days ago config: i386-randconfig-m021-20210407 (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 <l...@intel.com> Reported-by: Dan Carpenter <dan.carpen...@oracle.com> smatch warnings: drivers/pci/controller/cadence/pci-j721e.c:417 j721e_pcie_probe() warn: missing error code 'ret' vim +/ret +417 drivers/pci/controller/cadence/pci-j721e.c f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 302 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 303 static int j721e_pcie_probe(struct platform_device *pdev) f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 304 { f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 305 struct device *dev = &pdev->dev; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 306 struct device_node *node = dev->of_node; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 307 struct pci_host_bridge *bridge; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 308 struct j721e_pcie_data *data; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 309 struct cdns_pcie *cdns_pcie; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 310 struct j721e_pcie *pcie; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 311 struct cdns_pcie_rc *rc; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 312 struct cdns_pcie_ep *ep; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 313 struct gpio_desc *gpiod; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 314 void __iomem *base; d6c94541065433 Kishon Vijay Abraham I 2021-03-30 315 struct clk *clk; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 316 u32 num_lanes; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 317 u32 mode; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 318 int ret; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 319 int irq; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 320 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 321 data = (struct j721e_pcie_data *)of_device_get_match_data(dev); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 322 if (!data) f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 323 return -EINVAL; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 324 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 325 mode = (u32)data->mode; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 326 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 327 pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 328 if (!pcie) f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 329 return -ENOMEM; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 330 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 331 pcie->dev = dev; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 332 pcie->mode = mode; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 333 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 334 base = devm_platform_ioremap_resource_byname(pdev, "intd_cfg"); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 335 if (IS_ERR(base)) f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 336 return PTR_ERR(base); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 337 pcie->intd_cfg_base = base; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 338 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 339 base = devm_platform_ioremap_resource_byname(pdev, "user_cfg"); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 340 if (IS_ERR(base)) f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 341 return PTR_ERR(base); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 342 pcie->user_cfg_base = base; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 343 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 344 ret = of_property_read_u32(node, "num-lanes", &num_lanes); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 345 if (ret || num_lanes > MAX_LANES) f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 346 num_lanes = 1; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 347 pcie->num_lanes = num_lanes; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 348 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 349 if (dma_set_mask_and_coherent(dev, DMA_BIT_MASK(48))) f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 350 return -EINVAL; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 351 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 352 irq = platform_get_irq_byname(pdev, "link_state"); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 353 if (irq < 0) f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 354 return irq; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 355 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 356 dev_set_drvdata(dev, pcie); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 357 pm_runtime_enable(dev); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 358 ret = pm_runtime_get_sync(dev); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 359 if (ret < 0) { f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 360 dev_err(dev, "pm_runtime_get_sync failed\n"); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 361 goto err_get_sync; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 362 } f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 363 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 364 ret = j721e_pcie_ctrl_init(pcie); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 365 if (ret < 0) { f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 366 dev_err(dev, "pm_runtime_get_sync failed\n"); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 367 goto err_get_sync; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 368 } f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 369 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 370 ret = devm_request_irq(dev, irq, j721e_pcie_link_irq_handler, 0, f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 371 "j721e-pcie-link-down-irq", pcie); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 372 if (ret < 0) { f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 373 dev_err(dev, "failed to request link state IRQ %d\n", irq); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 374 goto err_get_sync; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 375 } f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 376 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 377 j721e_pcie_config_link_irq(pcie); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 378 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 379 switch (mode) { f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 380 case PCI_MODE_RC: f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 381 if (!IS_ENABLED(CONFIG_PCIE_CADENCE_HOST)) { f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 382 ret = -ENODEV; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 383 goto err_get_sync; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 384 } f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 385 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 386 bridge = devm_pci_alloc_host_bridge(dev, sizeof(*rc)); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 387 if (!bridge) { f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 388 ret = -ENOMEM; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 389 goto err_get_sync; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 390 } f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 391 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 392 bridge->ops = &cdns_ti_pcie_host_ops; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 393 rc = pci_host_bridge_priv(bridge); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 394 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 395 cdns_pcie = &rc->pcie; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 396 cdns_pcie->dev = dev; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 397 cdns_pcie->ops = &j721e_pcie_ops; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 398 pcie->cdns_pcie = cdns_pcie; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 399 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 400 gpiod = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 401 if (IS_ERR(gpiod)) { f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 402 ret = PTR_ERR(gpiod); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 403 if (ret != -EPROBE_DEFER) f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 404 dev_err(dev, "Failed to get reset GPIO\n"); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 405 goto err_get_sync; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 406 } f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 407 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 408 ret = cdns_pcie_init_phy(dev, cdns_pcie); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 409 if (ret) { f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 410 dev_err(dev, "Failed to init phy\n"); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 411 goto err_get_sync; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 412 } f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 413 d6c94541065433 Kishon Vijay Abraham I 2021-03-30 414 clk = devm_clk_get_optional(dev, "pcie_refclk"); d6c94541065433 Kishon Vijay Abraham I 2021-03-30 415 if (IS_ERR(clk)) { d6c94541065433 Kishon Vijay Abraham I 2021-03-30 416 dev_err(dev, "failed to get pcie_refclk\n"); d6c94541065433 Kishon Vijay Abraham I 2021-03-30 @417 goto err_pcie_setup; d6c94541065433 Kishon Vijay Abraham I 2021-03-30 418 } d6c94541065433 Kishon Vijay Abraham I 2021-03-30 419 d6c94541065433 Kishon Vijay Abraham I 2021-03-30 420 ret = clk_prepare_enable(clk); d6c94541065433 Kishon Vijay Abraham I 2021-03-30 421 if (ret) { d6c94541065433 Kishon Vijay Abraham I 2021-03-30 422 dev_err(dev, "failed to enable pcie_refclk\n"); d6c94541065433 Kishon Vijay Abraham I 2021-03-30 423 goto err_get_sync; d6c94541065433 Kishon Vijay Abraham I 2021-03-30 424 } d6c94541065433 Kishon Vijay Abraham I 2021-03-30 425 pcie->refclk = clk; d6c94541065433 Kishon Vijay Abraham I 2021-03-30 426 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 427 /* f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 428 * "Power Sequencing and Reset Signal Timings" table in f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 429 * PCI EXPRESS CARD ELECTROMECHANICAL SPECIFICATION, REV. 3.0 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 430 * indicates PERST# should be deasserted after minimum of 100us f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 431 * once REFCLK is stable. The REFCLK to the connector in RC f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 432 * mode is selected while enabling the PHY. So deassert PERST# f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 433 * after 100 us. f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 434 */ f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 435 if (gpiod) { f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 436 usleep_range(100, 200); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 437 gpiod_set_value_cansleep(gpiod, 1); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 438 } f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 439 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 440 ret = cdns_pcie_host_setup(rc); d6c94541065433 Kishon Vijay Abraham I 2021-03-30 441 if (ret < 0) { d6c94541065433 Kishon Vijay Abraham I 2021-03-30 442 clk_disable_unprepare(pcie->refclk); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 443 goto err_pcie_setup; d6c94541065433 Kishon Vijay Abraham I 2021-03-30 444 } f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 445 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 446 break; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 447 case PCI_MODE_EP: f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 448 if (!IS_ENABLED(CONFIG_PCIE_CADENCE_EP)) { f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 449 ret = -ENODEV; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 450 goto err_get_sync; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 451 } f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 452 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 453 ep = devm_kzalloc(dev, sizeof(*ep), GFP_KERNEL); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 454 if (!ep) { f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 455 ret = -ENOMEM; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 456 goto err_get_sync; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 457 } f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 458 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 459 cdns_pcie = &ep->pcie; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 460 cdns_pcie->dev = dev; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 461 cdns_pcie->ops = &j721e_pcie_ops; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 462 pcie->cdns_pcie = cdns_pcie; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 463 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 464 ret = cdns_pcie_init_phy(dev, cdns_pcie); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 465 if (ret) { f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 466 dev_err(dev, "Failed to init phy\n"); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 467 goto err_get_sync; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 468 } f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 469 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 470 ret = cdns_pcie_ep_setup(ep); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 471 if (ret < 0) f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 472 goto err_pcie_setup; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 473 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 474 break; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 475 default: f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 476 dev_err(dev, "INVALID device type %d\n", mode); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 477 } f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 478 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 479 return 0; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 480 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 481 err_pcie_setup: f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 482 cdns_pcie_disable_phy(cdns_pcie); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 483 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 484 err_get_sync: f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 485 pm_runtime_put(dev); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 486 pm_runtime_disable(dev); f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 487 f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 488 return ret; f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 489 } f3e25911a430ed Kishon Vijay Abraham I 2020-07-22 490 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- kbuild@lists.01.org To unsubscribe send an email to kbuild-le...@lists.01.org