All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Sergey Shtylyov <s.shtylyov@omp.ru>,
	linux-usb@vger.kernel.org, Alan Stern <stern@rowland.harvard.edu>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: kbuild-all@lists.01.org,
	Thierry Reding <thierry.reding@gmail.com>,
	Jonathan Hunter <jonathanh@nvidia.com>,
	linux-tegra@vger.kernel.org
Subject: Re: [PATCH v2 22/22] usb: host: xhci-tegra: deny IRQ0
Date: Sun, 31 Oct 2021 06:08:43 +0800	[thread overview]
Message-ID: <202110310604.388hcvrm-lkp@intel.com> (raw)
In-Reply-To: <20211026173943.6829-23-s.shtylyov@omp.ru>

[-- Attachment #1: Type: text/plain, Size: 14332 bytes --]

Hi Sergey,

I love your patch! Yet something to improve:

[auto build test ERROR on usb/usb-testing]
[also build test ERROR on peter-chen-usb/for-usb-next v5.15-rc7 next-20211029]
[cannot apply to balbi-usb/testing/next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Sergey-Shtylyov/Explicitly-deny-IRQ0-in-the-USB-host-drivers/20211027-015925
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
config: arm-defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/23ab86f72b35fb51cbc8add959ca78506d95ef25
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Sergey-Shtylyov/Explicitly-deny-IRQ0-in-the-USB-host-drivers/20211027-015925
        git checkout 23ab86f72b35fb51cbc8add959ca78506d95ef25
        # save the attached .config to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=arm SHELL=/bin/bash drivers/usb/host/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/usb/host/xhci-tegra.c: In function 'tegra_xusb_probe':
>> drivers/usb/host/xhci-tegra.c:1443:25: error: 'ENIVAL' undeclared (first use in this function); did you mean 'EINVAL'?
    1443 |                 return -ENIVAL;
         |                         ^~~~~~
         |                         EINVAL
   drivers/usb/host/xhci-tegra.c:1443:25: note: each undeclared identifier is reported only once for each function it appears in


vim +1443 drivers/usb/host/xhci-tegra.c

  1400	
  1401	static int tegra_xusb_probe(struct platform_device *pdev)
  1402	{
  1403		struct tegra_xusb *tegra;
  1404		struct device_node *np;
  1405		struct resource *regs;
  1406		struct xhci_hcd *xhci;
  1407		unsigned int i, j, k;
  1408		struct phy *phy;
  1409		int err;
  1410	
  1411		BUILD_BUG_ON(sizeof(struct tegra_xusb_fw_header) != 256);
  1412	
  1413		tegra = devm_kzalloc(&pdev->dev, sizeof(*tegra), GFP_KERNEL);
  1414		if (!tegra)
  1415			return -ENOMEM;
  1416	
  1417		tegra->soc = of_device_get_match_data(&pdev->dev);
  1418		mutex_init(&tegra->lock);
  1419		tegra->dev = &pdev->dev;
  1420	
  1421		err = tegra_xusb_init_context(tegra);
  1422		if (err < 0)
  1423			return err;
  1424	
  1425		tegra->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &regs);
  1426		if (IS_ERR(tegra->regs))
  1427			return PTR_ERR(tegra->regs);
  1428	
  1429		tegra->fpci_base = devm_platform_ioremap_resource(pdev, 1);
  1430		if (IS_ERR(tegra->fpci_base))
  1431			return PTR_ERR(tegra->fpci_base);
  1432	
  1433		if (tegra->soc->has_ipfs) {
  1434			tegra->ipfs_base = devm_platform_ioremap_resource(pdev, 2);
  1435			if (IS_ERR(tegra->ipfs_base))
  1436				return PTR_ERR(tegra->ipfs_base);
  1437		}
  1438	
  1439		tegra->xhci_irq = platform_get_irq(pdev, 0);
  1440		if (tegra->xhci_irq < 0)
  1441			return tegra->xhci_irq;
  1442		if (!tegra->xhci_irq)
> 1443			return -ENIVAL;
  1444	
  1445		tegra->mbox_irq = platform_get_irq(pdev, 1);
  1446		if (tegra->mbox_irq < 0)
  1447			return tegra->mbox_irq;
  1448	
  1449		tegra->padctl = tegra_xusb_padctl_get(&pdev->dev);
  1450		if (IS_ERR(tegra->padctl))
  1451			return PTR_ERR(tegra->padctl);
  1452	
  1453		np = of_parse_phandle(pdev->dev.of_node, "nvidia,xusb-padctl", 0);
  1454		if (!np) {
  1455			err = -ENODEV;
  1456			goto put_padctl;
  1457		}
  1458	
  1459		tegra->padctl_irq = of_irq_get(np, 0);
  1460		if (tegra->padctl_irq <= 0) {
  1461			err = (tegra->padctl_irq == 0) ? -ENODEV : tegra->padctl_irq;
  1462			goto put_padctl;
  1463		}
  1464	
  1465		tegra->host_clk = devm_clk_get(&pdev->dev, "xusb_host");
  1466		if (IS_ERR(tegra->host_clk)) {
  1467			err = PTR_ERR(tegra->host_clk);
  1468			dev_err(&pdev->dev, "failed to get xusb_host: %d\n", err);
  1469			goto put_padctl;
  1470		}
  1471	
  1472		tegra->falcon_clk = devm_clk_get(&pdev->dev, "xusb_falcon_src");
  1473		if (IS_ERR(tegra->falcon_clk)) {
  1474			err = PTR_ERR(tegra->falcon_clk);
  1475			dev_err(&pdev->dev, "failed to get xusb_falcon_src: %d\n", err);
  1476			goto put_padctl;
  1477		}
  1478	
  1479		tegra->ss_clk = devm_clk_get(&pdev->dev, "xusb_ss");
  1480		if (IS_ERR(tegra->ss_clk)) {
  1481			err = PTR_ERR(tegra->ss_clk);
  1482			dev_err(&pdev->dev, "failed to get xusb_ss: %d\n", err);
  1483			goto put_padctl;
  1484		}
  1485	
  1486		tegra->ss_src_clk = devm_clk_get(&pdev->dev, "xusb_ss_src");
  1487		if (IS_ERR(tegra->ss_src_clk)) {
  1488			err = PTR_ERR(tegra->ss_src_clk);
  1489			dev_err(&pdev->dev, "failed to get xusb_ss_src: %d\n", err);
  1490			goto put_padctl;
  1491		}
  1492	
  1493		tegra->hs_src_clk = devm_clk_get(&pdev->dev, "xusb_hs_src");
  1494		if (IS_ERR(tegra->hs_src_clk)) {
  1495			err = PTR_ERR(tegra->hs_src_clk);
  1496			dev_err(&pdev->dev, "failed to get xusb_hs_src: %d\n", err);
  1497			goto put_padctl;
  1498		}
  1499	
  1500		tegra->fs_src_clk = devm_clk_get(&pdev->dev, "xusb_fs_src");
  1501		if (IS_ERR(tegra->fs_src_clk)) {
  1502			err = PTR_ERR(tegra->fs_src_clk);
  1503			dev_err(&pdev->dev, "failed to get xusb_fs_src: %d\n", err);
  1504			goto put_padctl;
  1505		}
  1506	
  1507		tegra->pll_u_480m = devm_clk_get(&pdev->dev, "pll_u_480m");
  1508		if (IS_ERR(tegra->pll_u_480m)) {
  1509			err = PTR_ERR(tegra->pll_u_480m);
  1510			dev_err(&pdev->dev, "failed to get pll_u_480m: %d\n", err);
  1511			goto put_padctl;
  1512		}
  1513	
  1514		tegra->clk_m = devm_clk_get(&pdev->dev, "clk_m");
  1515		if (IS_ERR(tegra->clk_m)) {
  1516			err = PTR_ERR(tegra->clk_m);
  1517			dev_err(&pdev->dev, "failed to get clk_m: %d\n", err);
  1518			goto put_padctl;
  1519		}
  1520	
  1521		tegra->pll_e = devm_clk_get(&pdev->dev, "pll_e");
  1522		if (IS_ERR(tegra->pll_e)) {
  1523			err = PTR_ERR(tegra->pll_e);
  1524			dev_err(&pdev->dev, "failed to get pll_e: %d\n", err);
  1525			goto put_padctl;
  1526		}
  1527	
  1528		if (!of_property_read_bool(pdev->dev.of_node, "power-domains")) {
  1529			tegra->host_rst = devm_reset_control_get(&pdev->dev,
  1530								 "xusb_host");
  1531			if (IS_ERR(tegra->host_rst)) {
  1532				err = PTR_ERR(tegra->host_rst);
  1533				dev_err(&pdev->dev,
  1534					"failed to get xusb_host reset: %d\n", err);
  1535				goto put_padctl;
  1536			}
  1537	
  1538			tegra->ss_rst = devm_reset_control_get(&pdev->dev, "xusb_ss");
  1539			if (IS_ERR(tegra->ss_rst)) {
  1540				err = PTR_ERR(tegra->ss_rst);
  1541				dev_err(&pdev->dev, "failed to get xusb_ss reset: %d\n",
  1542					err);
  1543				goto put_padctl;
  1544			}
  1545		} else {
  1546			err = tegra_xusb_powerdomain_init(&pdev->dev, tegra);
  1547			if (err)
  1548				goto put_powerdomains;
  1549		}
  1550	
  1551		tegra->supplies = devm_kcalloc(&pdev->dev, tegra->soc->num_supplies,
  1552					       sizeof(*tegra->supplies), GFP_KERNEL);
  1553		if (!tegra->supplies) {
  1554			err = -ENOMEM;
  1555			goto put_powerdomains;
  1556		}
  1557	
  1558		regulator_bulk_set_supply_names(tegra->supplies,
  1559						tegra->soc->supply_names,
  1560						tegra->soc->num_supplies);
  1561	
  1562		err = devm_regulator_bulk_get(&pdev->dev, tegra->soc->num_supplies,
  1563					      tegra->supplies);
  1564		if (err) {
  1565			dev_err(&pdev->dev, "failed to get regulators: %d\n", err);
  1566			goto put_powerdomains;
  1567		}
  1568	
  1569		for (i = 0; i < tegra->soc->num_types; i++) {
  1570			if (!strncmp(tegra->soc->phy_types[i].name, "usb2", 4))
  1571				tegra->num_usb_phys = tegra->soc->phy_types[i].num;
  1572			tegra->num_phys += tegra->soc->phy_types[i].num;
  1573		}
  1574	
  1575		tegra->phys = devm_kcalloc(&pdev->dev, tegra->num_phys,
  1576					   sizeof(*tegra->phys), GFP_KERNEL);
  1577		if (!tegra->phys) {
  1578			err = -ENOMEM;
  1579			goto put_powerdomains;
  1580		}
  1581	
  1582		for (i = 0, k = 0; i < tegra->soc->num_types; i++) {
  1583			char prop[8];
  1584	
  1585			for (j = 0; j < tegra->soc->phy_types[i].num; j++) {
  1586				snprintf(prop, sizeof(prop), "%s-%d",
  1587					 tegra->soc->phy_types[i].name, j);
  1588	
  1589				phy = devm_phy_optional_get(&pdev->dev, prop);
  1590				if (IS_ERR(phy)) {
  1591					dev_err(&pdev->dev,
  1592						"failed to get PHY %s: %ld\n", prop,
  1593						PTR_ERR(phy));
  1594					err = PTR_ERR(phy);
  1595					goto put_powerdomains;
  1596				}
  1597	
  1598				tegra->phys[k++] = phy;
  1599			}
  1600		}
  1601	
  1602		tegra->hcd = usb_create_hcd(&tegra_xhci_hc_driver, &pdev->dev,
  1603					    dev_name(&pdev->dev));
  1604		if (!tegra->hcd) {
  1605			err = -ENOMEM;
  1606			goto put_powerdomains;
  1607		}
  1608	
  1609		tegra->hcd->skip_phy_initialization = 1;
  1610		tegra->hcd->regs = tegra->regs;
  1611		tegra->hcd->rsrc_start = regs->start;
  1612		tegra->hcd->rsrc_len = resource_size(regs);
  1613	
  1614		/*
  1615		 * This must happen after usb_create_hcd(), because usb_create_hcd()
  1616		 * will overwrite the drvdata of the device with the hcd it creates.
  1617		 */
  1618		platform_set_drvdata(pdev, tegra);
  1619	
  1620		err = tegra_xusb_clk_enable(tegra);
  1621		if (err) {
  1622			dev_err(tegra->dev, "failed to enable clocks: %d\n", err);
  1623			goto put_hcd;
  1624		}
  1625	
  1626		err = regulator_bulk_enable(tegra->soc->num_supplies, tegra->supplies);
  1627		if (err) {
  1628			dev_err(tegra->dev, "failed to enable regulators: %d\n", err);
  1629			goto disable_clk;
  1630		}
  1631	
  1632		err = tegra_xusb_phy_enable(tegra);
  1633		if (err < 0) {
  1634			dev_err(&pdev->dev, "failed to enable PHYs: %d\n", err);
  1635			goto disable_regulator;
  1636		}
  1637	
  1638		/*
  1639		 * The XUSB Falcon microcontroller can only address 40 bits, so set
  1640		 * the DMA mask accordingly.
  1641		 */
  1642		err = dma_set_mask_and_coherent(tegra->dev, DMA_BIT_MASK(40));
  1643		if (err < 0) {
  1644			dev_err(&pdev->dev, "failed to set DMA mask: %d\n", err);
  1645			goto disable_phy;
  1646		}
  1647	
  1648		err = tegra_xusb_request_firmware(tegra);
  1649		if (err < 0) {
  1650			dev_err(&pdev->dev, "failed to request firmware: %d\n", err);
  1651			goto disable_phy;
  1652		}
  1653	
  1654		err = tegra_xusb_unpowergate_partitions(tegra);
  1655		if (err)
  1656			goto free_firmware;
  1657	
  1658		tegra_xusb_config(tegra);
  1659	
  1660		err = tegra_xusb_load_firmware(tegra);
  1661		if (err < 0) {
  1662			dev_err(&pdev->dev, "failed to load firmware: %d\n", err);
  1663			goto powergate;
  1664		}
  1665	
  1666		err = usb_add_hcd(tegra->hcd, tegra->xhci_irq, IRQF_SHARED);
  1667		if (err < 0) {
  1668			dev_err(&pdev->dev, "failed to add USB HCD: %d\n", err);
  1669			goto powergate;
  1670		}
  1671	
  1672		device_wakeup_enable(tegra->hcd->self.controller);
  1673	
  1674		xhci = hcd_to_xhci(tegra->hcd);
  1675	
  1676		xhci->shared_hcd = usb_create_shared_hcd(&tegra_xhci_hc_driver,
  1677							 &pdev->dev,
  1678							 dev_name(&pdev->dev),
  1679							 tegra->hcd);
  1680		if (!xhci->shared_hcd) {
  1681			dev_err(&pdev->dev, "failed to create shared HCD\n");
  1682			err = -ENOMEM;
  1683			goto remove_usb2;
  1684		}
  1685	
  1686		err = usb_add_hcd(xhci->shared_hcd, tegra->xhci_irq, IRQF_SHARED);
  1687		if (err < 0) {
  1688			dev_err(&pdev->dev, "failed to add shared HCD: %d\n", err);
  1689			goto put_usb3;
  1690		}
  1691	
  1692		err = devm_request_threaded_irq(&pdev->dev, tegra->mbox_irq,
  1693						tegra_xusb_mbox_irq,
  1694						tegra_xusb_mbox_thread, 0,
  1695						dev_name(&pdev->dev), tegra);
  1696		if (err < 0) {
  1697			dev_err(&pdev->dev, "failed to request IRQ: %d\n", err);
  1698			goto remove_usb3;
  1699		}
  1700	
  1701		err = devm_request_threaded_irq(&pdev->dev, tegra->padctl_irq, NULL, tegra_xusb_padctl_irq,
  1702						IRQF_ONESHOT, dev_name(&pdev->dev), tegra);
  1703		if (err < 0) {
  1704			dev_err(&pdev->dev, "failed to request padctl IRQ: %d\n", err);
  1705			goto remove_usb3;
  1706		}
  1707	
  1708		err = tegra_xusb_enable_firmware_messages(tegra);
  1709		if (err < 0) {
  1710			dev_err(&pdev->dev, "failed to enable messages: %d\n", err);
  1711			goto remove_usb3;
  1712		}
  1713	
  1714		err = tegra_xusb_init_usb_phy(tegra);
  1715		if (err < 0) {
  1716			dev_err(&pdev->dev, "failed to init USB PHY: %d\n", err);
  1717			goto remove_usb3;
  1718		}
  1719	
  1720		/* Enable wake for both USB 2.0 and USB 3.0 roothubs */
  1721		device_init_wakeup(&tegra->hcd->self.root_hub->dev, true);
  1722		device_init_wakeup(&xhci->shared_hcd->self.root_hub->dev, true);
  1723		device_init_wakeup(tegra->dev, true);
  1724	
  1725		pm_runtime_use_autosuspend(tegra->dev);
  1726		pm_runtime_set_autosuspend_delay(tegra->dev, 2000);
  1727		pm_runtime_mark_last_busy(tegra->dev);
  1728		pm_runtime_set_active(tegra->dev);
  1729		pm_runtime_enable(tegra->dev);
  1730	
  1731		return 0;
  1732	
  1733	remove_usb3:
  1734		usb_remove_hcd(xhci->shared_hcd);
  1735	put_usb3:
  1736		usb_put_hcd(xhci->shared_hcd);
  1737	remove_usb2:
  1738		usb_remove_hcd(tegra->hcd);
  1739	powergate:
  1740		tegra_xusb_powergate_partitions(tegra);
  1741	free_firmware:
  1742		dma_free_coherent(&pdev->dev, tegra->fw.size, tegra->fw.virt,
  1743				  tegra->fw.phys);
  1744	disable_phy:
  1745		tegra_xusb_phy_disable(tegra);
  1746	disable_regulator:
  1747		regulator_bulk_disable(tegra->soc->num_supplies, tegra->supplies);
  1748	disable_clk:
  1749		tegra_xusb_clk_disable(tegra);
  1750	put_hcd:
  1751		usb_put_hcd(tegra->hcd);
  1752	put_powerdomains:
  1753		tegra_xusb_powerdomain_remove(&pdev->dev, tegra);
  1754	put_padctl:
  1755		of_node_put(np);
  1756		tegra_xusb_padctl_put(tegra->padctl);
  1757		return err;
  1758	}
  1759	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 55370 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH v2 22/22] usb: host: xhci-tegra: deny IRQ0
Date: Sun, 31 Oct 2021 06:08:43 +0800	[thread overview]
Message-ID: <202110310604.388hcvrm-lkp@intel.com> (raw)
In-Reply-To: <20211026173943.6829-23-s.shtylyov@omp.ru>

[-- Attachment #1: Type: text/plain, Size: 14739 bytes --]

Hi Sergey,

I love your patch! Yet something to improve:

[auto build test ERROR on usb/usb-testing]
[also build test ERROR on peter-chen-usb/for-usb-next v5.15-rc7 next-20211029]
[cannot apply to balbi-usb/testing/next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Sergey-Shtylyov/Explicitly-deny-IRQ0-in-the-USB-host-drivers/20211027-015925
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
config: arm-defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/23ab86f72b35fb51cbc8add959ca78506d95ef25
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Sergey-Shtylyov/Explicitly-deny-IRQ0-in-the-USB-host-drivers/20211027-015925
        git checkout 23ab86f72b35fb51cbc8add959ca78506d95ef25
        # save the attached .config to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=arm SHELL=/bin/bash drivers/usb/host/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/usb/host/xhci-tegra.c: In function 'tegra_xusb_probe':
>> drivers/usb/host/xhci-tegra.c:1443:25: error: 'ENIVAL' undeclared (first use in this function); did you mean 'EINVAL'?
    1443 |                 return -ENIVAL;
         |                         ^~~~~~
         |                         EINVAL
   drivers/usb/host/xhci-tegra.c:1443:25: note: each undeclared identifier is reported only once for each function it appears in


vim +1443 drivers/usb/host/xhci-tegra.c

  1400	
  1401	static int tegra_xusb_probe(struct platform_device *pdev)
  1402	{
  1403		struct tegra_xusb *tegra;
  1404		struct device_node *np;
  1405		struct resource *regs;
  1406		struct xhci_hcd *xhci;
  1407		unsigned int i, j, k;
  1408		struct phy *phy;
  1409		int err;
  1410	
  1411		BUILD_BUG_ON(sizeof(struct tegra_xusb_fw_header) != 256);
  1412	
  1413		tegra = devm_kzalloc(&pdev->dev, sizeof(*tegra), GFP_KERNEL);
  1414		if (!tegra)
  1415			return -ENOMEM;
  1416	
  1417		tegra->soc = of_device_get_match_data(&pdev->dev);
  1418		mutex_init(&tegra->lock);
  1419		tegra->dev = &pdev->dev;
  1420	
  1421		err = tegra_xusb_init_context(tegra);
  1422		if (err < 0)
  1423			return err;
  1424	
  1425		tegra->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &regs);
  1426		if (IS_ERR(tegra->regs))
  1427			return PTR_ERR(tegra->regs);
  1428	
  1429		tegra->fpci_base = devm_platform_ioremap_resource(pdev, 1);
  1430		if (IS_ERR(tegra->fpci_base))
  1431			return PTR_ERR(tegra->fpci_base);
  1432	
  1433		if (tegra->soc->has_ipfs) {
  1434			tegra->ipfs_base = devm_platform_ioremap_resource(pdev, 2);
  1435			if (IS_ERR(tegra->ipfs_base))
  1436				return PTR_ERR(tegra->ipfs_base);
  1437		}
  1438	
  1439		tegra->xhci_irq = platform_get_irq(pdev, 0);
  1440		if (tegra->xhci_irq < 0)
  1441			return tegra->xhci_irq;
  1442		if (!tegra->xhci_irq)
> 1443			return -ENIVAL;
  1444	
  1445		tegra->mbox_irq = platform_get_irq(pdev, 1);
  1446		if (tegra->mbox_irq < 0)
  1447			return tegra->mbox_irq;
  1448	
  1449		tegra->padctl = tegra_xusb_padctl_get(&pdev->dev);
  1450		if (IS_ERR(tegra->padctl))
  1451			return PTR_ERR(tegra->padctl);
  1452	
  1453		np = of_parse_phandle(pdev->dev.of_node, "nvidia,xusb-padctl", 0);
  1454		if (!np) {
  1455			err = -ENODEV;
  1456			goto put_padctl;
  1457		}
  1458	
  1459		tegra->padctl_irq = of_irq_get(np, 0);
  1460		if (tegra->padctl_irq <= 0) {
  1461			err = (tegra->padctl_irq == 0) ? -ENODEV : tegra->padctl_irq;
  1462			goto put_padctl;
  1463		}
  1464	
  1465		tegra->host_clk = devm_clk_get(&pdev->dev, "xusb_host");
  1466		if (IS_ERR(tegra->host_clk)) {
  1467			err = PTR_ERR(tegra->host_clk);
  1468			dev_err(&pdev->dev, "failed to get xusb_host: %d\n", err);
  1469			goto put_padctl;
  1470		}
  1471	
  1472		tegra->falcon_clk = devm_clk_get(&pdev->dev, "xusb_falcon_src");
  1473		if (IS_ERR(tegra->falcon_clk)) {
  1474			err = PTR_ERR(tegra->falcon_clk);
  1475			dev_err(&pdev->dev, "failed to get xusb_falcon_src: %d\n", err);
  1476			goto put_padctl;
  1477		}
  1478	
  1479		tegra->ss_clk = devm_clk_get(&pdev->dev, "xusb_ss");
  1480		if (IS_ERR(tegra->ss_clk)) {
  1481			err = PTR_ERR(tegra->ss_clk);
  1482			dev_err(&pdev->dev, "failed to get xusb_ss: %d\n", err);
  1483			goto put_padctl;
  1484		}
  1485	
  1486		tegra->ss_src_clk = devm_clk_get(&pdev->dev, "xusb_ss_src");
  1487		if (IS_ERR(tegra->ss_src_clk)) {
  1488			err = PTR_ERR(tegra->ss_src_clk);
  1489			dev_err(&pdev->dev, "failed to get xusb_ss_src: %d\n", err);
  1490			goto put_padctl;
  1491		}
  1492	
  1493		tegra->hs_src_clk = devm_clk_get(&pdev->dev, "xusb_hs_src");
  1494		if (IS_ERR(tegra->hs_src_clk)) {
  1495			err = PTR_ERR(tegra->hs_src_clk);
  1496			dev_err(&pdev->dev, "failed to get xusb_hs_src: %d\n", err);
  1497			goto put_padctl;
  1498		}
  1499	
  1500		tegra->fs_src_clk = devm_clk_get(&pdev->dev, "xusb_fs_src");
  1501		if (IS_ERR(tegra->fs_src_clk)) {
  1502			err = PTR_ERR(tegra->fs_src_clk);
  1503			dev_err(&pdev->dev, "failed to get xusb_fs_src: %d\n", err);
  1504			goto put_padctl;
  1505		}
  1506	
  1507		tegra->pll_u_480m = devm_clk_get(&pdev->dev, "pll_u_480m");
  1508		if (IS_ERR(tegra->pll_u_480m)) {
  1509			err = PTR_ERR(tegra->pll_u_480m);
  1510			dev_err(&pdev->dev, "failed to get pll_u_480m: %d\n", err);
  1511			goto put_padctl;
  1512		}
  1513	
  1514		tegra->clk_m = devm_clk_get(&pdev->dev, "clk_m");
  1515		if (IS_ERR(tegra->clk_m)) {
  1516			err = PTR_ERR(tegra->clk_m);
  1517			dev_err(&pdev->dev, "failed to get clk_m: %d\n", err);
  1518			goto put_padctl;
  1519		}
  1520	
  1521		tegra->pll_e = devm_clk_get(&pdev->dev, "pll_e");
  1522		if (IS_ERR(tegra->pll_e)) {
  1523			err = PTR_ERR(tegra->pll_e);
  1524			dev_err(&pdev->dev, "failed to get pll_e: %d\n", err);
  1525			goto put_padctl;
  1526		}
  1527	
  1528		if (!of_property_read_bool(pdev->dev.of_node, "power-domains")) {
  1529			tegra->host_rst = devm_reset_control_get(&pdev->dev,
  1530								 "xusb_host");
  1531			if (IS_ERR(tegra->host_rst)) {
  1532				err = PTR_ERR(tegra->host_rst);
  1533				dev_err(&pdev->dev,
  1534					"failed to get xusb_host reset: %d\n", err);
  1535				goto put_padctl;
  1536			}
  1537	
  1538			tegra->ss_rst = devm_reset_control_get(&pdev->dev, "xusb_ss");
  1539			if (IS_ERR(tegra->ss_rst)) {
  1540				err = PTR_ERR(tegra->ss_rst);
  1541				dev_err(&pdev->dev, "failed to get xusb_ss reset: %d\n",
  1542					err);
  1543				goto put_padctl;
  1544			}
  1545		} else {
  1546			err = tegra_xusb_powerdomain_init(&pdev->dev, tegra);
  1547			if (err)
  1548				goto put_powerdomains;
  1549		}
  1550	
  1551		tegra->supplies = devm_kcalloc(&pdev->dev, tegra->soc->num_supplies,
  1552					       sizeof(*tegra->supplies), GFP_KERNEL);
  1553		if (!tegra->supplies) {
  1554			err = -ENOMEM;
  1555			goto put_powerdomains;
  1556		}
  1557	
  1558		regulator_bulk_set_supply_names(tegra->supplies,
  1559						tegra->soc->supply_names,
  1560						tegra->soc->num_supplies);
  1561	
  1562		err = devm_regulator_bulk_get(&pdev->dev, tegra->soc->num_supplies,
  1563					      tegra->supplies);
  1564		if (err) {
  1565			dev_err(&pdev->dev, "failed to get regulators: %d\n", err);
  1566			goto put_powerdomains;
  1567		}
  1568	
  1569		for (i = 0; i < tegra->soc->num_types; i++) {
  1570			if (!strncmp(tegra->soc->phy_types[i].name, "usb2", 4))
  1571				tegra->num_usb_phys = tegra->soc->phy_types[i].num;
  1572			tegra->num_phys += tegra->soc->phy_types[i].num;
  1573		}
  1574	
  1575		tegra->phys = devm_kcalloc(&pdev->dev, tegra->num_phys,
  1576					   sizeof(*tegra->phys), GFP_KERNEL);
  1577		if (!tegra->phys) {
  1578			err = -ENOMEM;
  1579			goto put_powerdomains;
  1580		}
  1581	
  1582		for (i = 0, k = 0; i < tegra->soc->num_types; i++) {
  1583			char prop[8];
  1584	
  1585			for (j = 0; j < tegra->soc->phy_types[i].num; j++) {
  1586				snprintf(prop, sizeof(prop), "%s-%d",
  1587					 tegra->soc->phy_types[i].name, j);
  1588	
  1589				phy = devm_phy_optional_get(&pdev->dev, prop);
  1590				if (IS_ERR(phy)) {
  1591					dev_err(&pdev->dev,
  1592						"failed to get PHY %s: %ld\n", prop,
  1593						PTR_ERR(phy));
  1594					err = PTR_ERR(phy);
  1595					goto put_powerdomains;
  1596				}
  1597	
  1598				tegra->phys[k++] = phy;
  1599			}
  1600		}
  1601	
  1602		tegra->hcd = usb_create_hcd(&tegra_xhci_hc_driver, &pdev->dev,
  1603					    dev_name(&pdev->dev));
  1604		if (!tegra->hcd) {
  1605			err = -ENOMEM;
  1606			goto put_powerdomains;
  1607		}
  1608	
  1609		tegra->hcd->skip_phy_initialization = 1;
  1610		tegra->hcd->regs = tegra->regs;
  1611		tegra->hcd->rsrc_start = regs->start;
  1612		tegra->hcd->rsrc_len = resource_size(regs);
  1613	
  1614		/*
  1615		 * This must happen after usb_create_hcd(), because usb_create_hcd()
  1616		 * will overwrite the drvdata of the device with the hcd it creates.
  1617		 */
  1618		platform_set_drvdata(pdev, tegra);
  1619	
  1620		err = tegra_xusb_clk_enable(tegra);
  1621		if (err) {
  1622			dev_err(tegra->dev, "failed to enable clocks: %d\n", err);
  1623			goto put_hcd;
  1624		}
  1625	
  1626		err = regulator_bulk_enable(tegra->soc->num_supplies, tegra->supplies);
  1627		if (err) {
  1628			dev_err(tegra->dev, "failed to enable regulators: %d\n", err);
  1629			goto disable_clk;
  1630		}
  1631	
  1632		err = tegra_xusb_phy_enable(tegra);
  1633		if (err < 0) {
  1634			dev_err(&pdev->dev, "failed to enable PHYs: %d\n", err);
  1635			goto disable_regulator;
  1636		}
  1637	
  1638		/*
  1639		 * The XUSB Falcon microcontroller can only address 40 bits, so set
  1640		 * the DMA mask accordingly.
  1641		 */
  1642		err = dma_set_mask_and_coherent(tegra->dev, DMA_BIT_MASK(40));
  1643		if (err < 0) {
  1644			dev_err(&pdev->dev, "failed to set DMA mask: %d\n", err);
  1645			goto disable_phy;
  1646		}
  1647	
  1648		err = tegra_xusb_request_firmware(tegra);
  1649		if (err < 0) {
  1650			dev_err(&pdev->dev, "failed to request firmware: %d\n", err);
  1651			goto disable_phy;
  1652		}
  1653	
  1654		err = tegra_xusb_unpowergate_partitions(tegra);
  1655		if (err)
  1656			goto free_firmware;
  1657	
  1658		tegra_xusb_config(tegra);
  1659	
  1660		err = tegra_xusb_load_firmware(tegra);
  1661		if (err < 0) {
  1662			dev_err(&pdev->dev, "failed to load firmware: %d\n", err);
  1663			goto powergate;
  1664		}
  1665	
  1666		err = usb_add_hcd(tegra->hcd, tegra->xhci_irq, IRQF_SHARED);
  1667		if (err < 0) {
  1668			dev_err(&pdev->dev, "failed to add USB HCD: %d\n", err);
  1669			goto powergate;
  1670		}
  1671	
  1672		device_wakeup_enable(tegra->hcd->self.controller);
  1673	
  1674		xhci = hcd_to_xhci(tegra->hcd);
  1675	
  1676		xhci->shared_hcd = usb_create_shared_hcd(&tegra_xhci_hc_driver,
  1677							 &pdev->dev,
  1678							 dev_name(&pdev->dev),
  1679							 tegra->hcd);
  1680		if (!xhci->shared_hcd) {
  1681			dev_err(&pdev->dev, "failed to create shared HCD\n");
  1682			err = -ENOMEM;
  1683			goto remove_usb2;
  1684		}
  1685	
  1686		err = usb_add_hcd(xhci->shared_hcd, tegra->xhci_irq, IRQF_SHARED);
  1687		if (err < 0) {
  1688			dev_err(&pdev->dev, "failed to add shared HCD: %d\n", err);
  1689			goto put_usb3;
  1690		}
  1691	
  1692		err = devm_request_threaded_irq(&pdev->dev, tegra->mbox_irq,
  1693						tegra_xusb_mbox_irq,
  1694						tegra_xusb_mbox_thread, 0,
  1695						dev_name(&pdev->dev), tegra);
  1696		if (err < 0) {
  1697			dev_err(&pdev->dev, "failed to request IRQ: %d\n", err);
  1698			goto remove_usb3;
  1699		}
  1700	
  1701		err = devm_request_threaded_irq(&pdev->dev, tegra->padctl_irq, NULL, tegra_xusb_padctl_irq,
  1702						IRQF_ONESHOT, dev_name(&pdev->dev), tegra);
  1703		if (err < 0) {
  1704			dev_err(&pdev->dev, "failed to request padctl IRQ: %d\n", err);
  1705			goto remove_usb3;
  1706		}
  1707	
  1708		err = tegra_xusb_enable_firmware_messages(tegra);
  1709		if (err < 0) {
  1710			dev_err(&pdev->dev, "failed to enable messages: %d\n", err);
  1711			goto remove_usb3;
  1712		}
  1713	
  1714		err = tegra_xusb_init_usb_phy(tegra);
  1715		if (err < 0) {
  1716			dev_err(&pdev->dev, "failed to init USB PHY: %d\n", err);
  1717			goto remove_usb3;
  1718		}
  1719	
  1720		/* Enable wake for both USB 2.0 and USB 3.0 roothubs */
  1721		device_init_wakeup(&tegra->hcd->self.root_hub->dev, true);
  1722		device_init_wakeup(&xhci->shared_hcd->self.root_hub->dev, true);
  1723		device_init_wakeup(tegra->dev, true);
  1724	
  1725		pm_runtime_use_autosuspend(tegra->dev);
  1726		pm_runtime_set_autosuspend_delay(tegra->dev, 2000);
  1727		pm_runtime_mark_last_busy(tegra->dev);
  1728		pm_runtime_set_active(tegra->dev);
  1729		pm_runtime_enable(tegra->dev);
  1730	
  1731		return 0;
  1732	
  1733	remove_usb3:
  1734		usb_remove_hcd(xhci->shared_hcd);
  1735	put_usb3:
  1736		usb_put_hcd(xhci->shared_hcd);
  1737	remove_usb2:
  1738		usb_remove_hcd(tegra->hcd);
  1739	powergate:
  1740		tegra_xusb_powergate_partitions(tegra);
  1741	free_firmware:
  1742		dma_free_coherent(&pdev->dev, tegra->fw.size, tegra->fw.virt,
  1743				  tegra->fw.phys);
  1744	disable_phy:
  1745		tegra_xusb_phy_disable(tegra);
  1746	disable_regulator:
  1747		regulator_bulk_disable(tegra->soc->num_supplies, tegra->supplies);
  1748	disable_clk:
  1749		tegra_xusb_clk_disable(tegra);
  1750	put_hcd:
  1751		usb_put_hcd(tegra->hcd);
  1752	put_powerdomains:
  1753		tegra_xusb_powerdomain_remove(&pdev->dev, tegra);
  1754	put_padctl:
  1755		of_node_put(np);
  1756		tegra_xusb_padctl_put(tegra->padctl);
  1757		return err;
  1758	}
  1759	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 55370 bytes --]

  reply	other threads:[~2021-10-30 22:09 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-26 17:39 [PATCH v2 00/22] Explicitly deny IRQ0 in the USB host drivers Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 01/22] usb: host: ehci-exynos: deny IRQ0 Sergey Shtylyov
2021-10-26 17:39   ` Sergey Shtylyov
2021-10-30  8:54   ` Greg Kroah-Hartman
2021-10-30  8:54     ` Greg Kroah-Hartman
2021-11-01 20:39     ` Sergey Shtylyov
2021-11-01 20:39       ` Sergey Shtylyov
2021-11-02 13:55       ` Greg Kroah-Hartman
2021-11-02 13:55         ` Greg Kroah-Hartman
2021-11-02 20:45         ` Sergey Shtylyov
2021-11-02 20:45           ` Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 02/22] usb: host: ehci-mv: " Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 03/22] usb: host: ehci-npcm7xx: " Sergey Shtylyov
2021-10-26 17:39   ` Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 04/22] usb: host: ehci-omap: " Sergey Shtylyov
2021-10-30 19:49   ` kernel test robot
2021-10-30 19:49     ` kernel test robot
2021-10-26 17:39 ` [PATCH v2 05/22] usb: host: ehci-platform: " Sergey Shtylyov
2021-10-26 17:39   ` Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 06/22] usb: host: ehci-spear: " Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 07/22] usb: host: ehci-st: " Sergey Shtylyov
2021-10-26 17:39   ` Sergey Shtylyov
2021-10-27  6:08   ` Patrice CHOTARD
2021-10-27  6:08     ` Patrice CHOTARD
2021-10-26 17:39 ` [PATCH v2 08/22] usb: host: ohci-at91: " Sergey Shtylyov
2021-10-26 17:39   ` Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 09/22] usb: host: ohci-da8xx: " Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 10/22] usb: host: ohci-exynos: " Sergey Shtylyov
2021-10-26 17:39   ` Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 11/22] usb: host: ohci-nxp: " Sergey Shtylyov
2021-10-26 17:39   ` Sergey Shtylyov
2021-10-26 18:25   ` Vladimir Zapolskiy
2021-10-26 18:25     ` Vladimir Zapolskiy
2021-10-26 17:39 ` [PATCH v2 12/22] usb: host: ohci-omap: " Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 13/22] usb: host: ohci-platform: " Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 14/22] usb: host: ohci-pxa27x: " Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 15/22] usb: host: ohci-sm501: " Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 16/22] usb: host: ohci-spear: " Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 17/22] usb: host: ohci-st: " Sergey Shtylyov
2021-10-26 17:39   ` Sergey Shtylyov
2021-10-27  6:08   ` Patrice CHOTARD
2021-10-27  6:08     ` Patrice CHOTARD
2021-10-26 17:39 ` [PATCH v2 18/22] usb: host: ohci-tmio: " Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 19/22] usb: host: xhci-histb: " Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 20/22] usb: host: xhci-mtk: " Sergey Shtylyov
2021-10-26 17:39   ` Sergey Shtylyov
2021-10-26 17:39   ` Sergey Shtylyov
2021-10-27  8:54   ` Chunfeng Yun
2021-10-27  8:54     ` Chunfeng Yun
2021-10-27  8:54     ` Chunfeng Yun
2021-10-27  9:18   ` Chunfeng Yun
2021-10-27  9:18     ` Chunfeng Yun
2021-10-27  9:18     ` Chunfeng Yun
2021-10-27  9:25     ` Sergey Shtylyov
2021-10-27  9:25       ` Sergey Shtylyov
2021-10-27  9:25       ` Sergey Shtylyov
2021-10-27  9:35       ` Chunfeng Yun
2021-10-27  9:35         ` Chunfeng Yun
2021-10-27  9:35         ` Chunfeng Yun
2021-10-26 17:39 ` [PATCH v2 21/22] usb: host: xhci-plat: " Sergey Shtylyov
2021-10-26 17:39 ` [PATCH v2 22/22] usb: host: xhci-tegra: " Sergey Shtylyov
2021-10-30 22:08   ` kernel test robot [this message]
2021-10-30 22:08     ` kernel test robot

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=202110310604.388hcvrm-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jonathanh@nvidia.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=s.shtylyov@omp.ru \
    --cc=stern@rowland.harvard.edu \
    --cc=thierry.reding@gmail.com \
    /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 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.