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-rt-linux-5.10.y
head:   abc20bb2f09a1001ca041b635f1241ddb2c5ea31
commit: d6c94541065433e99c45a5ba4280f2af08bd329a [4403/6600] PCI: j721e: Add 
support to provide refclk to PCIe connector
:::::: branch date: 19 hours ago
:::::: commit date: 3 months ago
config: x86_64-randconfig-m001-20210622 (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

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to