Re: [PATCH] bluetooth: pm: use SIMPLE_DEV_OPS for pm struct

kernel test robot <[email protected]>
Newsgroups org.kernel.vger.linux-bluetooth,dev.linux.lists.oe-kbuild-all
Message-ID <[email protected]>
Hi Li,

kernel test robot noticed the following build warnings:

[auto build test WARNING on bluetooth/master]
[also build test WARNING on bluetooth-next/master linus/master v7.2 next-20260820]
[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#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Li-Jun/bluetooth-pm-use-SIMPLE_DEV_OPS-for-pm-struct/20260819-134525
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth.git master
patch link:    https://lore.kernel.org/r/20260819054525.2325031-1-lijun01%40kylinos.cn
patch subject: [PATCH] bluetooth: pm: use SIMPLE_DEV_OPS for pm struct
config: nios2-allmodconfig (https://download.01.org/0day-ci/archive/20260821/[email protected]/config)
compiler: nios2-linux-gcc (GCC) 11.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260821/[email protected]/reproduce)

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 <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

All warnings (new ones prefixed by >>):

>> drivers/bluetooth/btmrvl_sdio.c:1678:12: warning: 'btmrvl_sdio_resume' defined but not used [-Wunused-function]
    1678 | static int btmrvl_sdio_resume(struct device *dev)
         |            ^~~~~~~~~~~~~~~~~~
>> drivers/bluetooth/btmrvl_sdio.c:1608:12: warning: 'btmrvl_sdio_suspend' defined but not used [-Wunused-function]
    1608 | static int btmrvl_sdio_suspend(struct device *dev)
         |            ^~~~~~~~~~~~~~~~~~~


vim +/btmrvl_sdio_resume +1678 drivers/bluetooth/btmrvl_sdio.c

789221ecc870117 Bing Zhao              2009-06-02  1607  
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25 @1608  static int btmrvl_sdio_suspend(struct device *dev)
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1609  {
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1610  	struct sdio_func *func = dev_to_sdio_func(dev);
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1611  	struct btmrvl_sdio_card *card;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1612  	struct btmrvl_private *priv;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1613  	mmc_pm_flag_t pm_flags;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1614  	struct hci_dev *hcidev;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1615  
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1616  	if (func) {
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1617  		pm_flags = sdio_get_host_pm_caps(func);
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1618  		BT_DBG("%s: suspend: PM flags = 0x%x", sdio_func_id(func),
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1619  		       pm_flags);
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1620  		if (!(pm_flags & MMC_PM_KEEP_POWER)) {
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1621  			BT_ERR("%s: cannot remain alive while suspended",
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1622  			       sdio_func_id(func));
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1623  			return -ENOSYS;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1624  		}
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1625  		card = sdio_get_drvdata(func);
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1626  		if (!card || !card->priv) {
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1627  			BT_ERR("card or priv structure is not valid");
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1628  			return 0;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1629  		}
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1630  	} else {
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1631  		BT_ERR("sdio_func is not specified");
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1632  		return 0;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1633  	}
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1634  
bb7f4f0bcee6844 Xinming Hu             2016-04-26  1635  	/* Enable platform specific wakeup interrupt */
e660b3510eb4b3c Abhishek Pandit-Subedi 2020-06-10  1636  	if (card->plt_wake_cfg && card->plt_wake_cfg->irq_bt >= 0 &&
e660b3510eb4b3c Abhishek Pandit-Subedi 2020-06-10  1637  	    device_may_wakeup(dev)) {
bb7f4f0bcee6844 Xinming Hu             2016-04-26  1638  		card->plt_wake_cfg->wake_by_bt = false;
bb7f4f0bcee6844 Xinming Hu             2016-04-26  1639  		enable_irq(card->plt_wake_cfg->irq_bt);
bb7f4f0bcee6844 Xinming Hu             2016-04-26  1640  		enable_irq_wake(card->plt_wake_cfg->irq_bt);
bb7f4f0bcee6844 Xinming Hu             2016-04-26  1641  	}
bb7f4f0bcee6844 Xinming Hu             2016-04-26  1642  
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1643  	priv = card->priv;
8cf60cf238ce1be Chin-Ran Lo            2016-01-06  1644  	priv->adapter->is_suspending = true;
5bf8a7481d21a66 Chin-Ran Lo            2014-07-14  1645  	hcidev = priv->btmrvl_dev.hcidev;
5bf8a7481d21a66 Chin-Ran Lo            2014-07-14  1646  	BT_DBG("%s: SDIO suspend", hcidev->name);
5bf8a7481d21a66 Chin-Ran Lo            2014-07-14  1647  	hci_suspend_dev(hcidev);
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1648  
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1649  	if (priv->adapter->hs_state != HS_ACTIVATED) {
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1650  		if (btmrvl_enable_hs(priv)) {
8f91566f99fab8f Colin Ian King         2017-02-18  1651  			BT_ERR("HS not activated, suspend failed!");
6eb7bd66830c1e1 Xinming Hu             2017-03-31  1652  			/* Disable platform specific wakeup interrupt */
6eb7bd66830c1e1 Xinming Hu             2017-03-31  1653  			if (card->plt_wake_cfg &&
e660b3510eb4b3c Abhishek Pandit-Subedi 2020-06-10  1654  			    card->plt_wake_cfg->irq_bt >= 0 &&
e660b3510eb4b3c Abhishek Pandit-Subedi 2020-06-10  1655  			    device_may_wakeup(dev)) {
6eb7bd66830c1e1 Xinming Hu             2017-03-31  1656  				disable_irq_wake(card->plt_wake_cfg->irq_bt);
6eb7bd66830c1e1 Xinming Hu             2017-03-31  1657  				disable_irq(card->plt_wake_cfg->irq_bt);
6eb7bd66830c1e1 Xinming Hu             2017-03-31  1658  			}
6eb7bd66830c1e1 Xinming Hu             2017-03-31  1659  
e7acf43024e95fa Amitkumar Karwar       2016-07-15  1660  			priv->adapter->is_suspending = false;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1661  			return -EBUSY;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1662  		}
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1663  	}
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1664  
8cf60cf238ce1be Chin-Ran Lo            2016-01-06  1665  	priv->adapter->is_suspending = false;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1666  	priv->adapter->is_suspended = true;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1667  
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1668  	/* We will keep the power when hs enabled successfully */
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1669  	if (priv->adapter->hs_state == HS_ACTIVATED) {
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1670  		BT_DBG("suspend with MMC_PM_KEEP_POWER");
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1671  		return sdio_set_host_pm_flags(func, MMC_PM_KEEP_POWER);
f1554b7b2c27ced prasanna karthik       2017-03-28  1672  	}
f1554b7b2c27ced prasanna karthik       2017-03-28  1673  
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1674  	BT_DBG("suspend without MMC_PM_KEEP_POWER");
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1675  	return 0;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1676  }
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1677  
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25 @1678  static int btmrvl_sdio_resume(struct device *dev)
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1679  {
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1680  	struct sdio_func *func = dev_to_sdio_func(dev);
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1681  	struct btmrvl_sdio_card *card;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1682  	struct btmrvl_private *priv;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1683  	mmc_pm_flag_t pm_flags;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1684  	struct hci_dev *hcidev;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1685  
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1686  	if (func) {
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1687  		pm_flags = sdio_get_host_pm_caps(func);
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1688  		BT_DBG("%s: resume: PM flags = 0x%x", sdio_func_id(func),
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1689  		       pm_flags);
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1690  		card = sdio_get_drvdata(func);
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1691  		if (!card || !card->priv) {
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1692  			BT_ERR("card or priv structure is not valid");
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1693  			return 0;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1694  		}
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1695  	} else {
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1696  		BT_ERR("sdio_func is not specified");
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1697  		return 0;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1698  	}
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1699  	priv = card->priv;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1700  
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1701  	if (!priv->adapter->is_suspended) {
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1702  		BT_DBG("device already resumed");
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1703  		return 0;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1704  	}
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1705  
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1706  	priv->hw_wakeup_firmware(priv);
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1707  	priv->adapter->hs_state = HS_DEACTIVATED;
5bf8a7481d21a66 Chin-Ran Lo            2014-07-14  1708  	hcidev = priv->btmrvl_dev.hcidev;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1709  	BT_DBG("%s: HS DEACTIVATED in resume!", hcidev->name);
5bf8a7481d21a66 Chin-Ran Lo            2014-07-14  1710  	priv->adapter->is_suspended = false;
5bf8a7481d21a66 Chin-Ran Lo            2014-07-14  1711  	BT_DBG("%s: SDIO resume", hcidev->name);
5bf8a7481d21a66 Chin-Ran Lo            2014-07-14  1712  	hci_resume_dev(hcidev);
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1713  
bb7f4f0bcee6844 Xinming Hu             2016-04-26  1714  	/* Disable platform specific wakeup interrupt */
e660b3510eb4b3c Abhishek Pandit-Subedi 2020-06-10  1715  	if (card->plt_wake_cfg && card->plt_wake_cfg->irq_bt >= 0 &&
e660b3510eb4b3c Abhishek Pandit-Subedi 2020-06-10  1716  	    device_may_wakeup(dev)) {
bb7f4f0bcee6844 Xinming Hu             2016-04-26  1717  		disable_irq_wake(card->plt_wake_cfg->irq_bt);
bb7f4f0bcee6844 Xinming Hu             2016-04-26  1718  		disable_irq(card->plt_wake_cfg->irq_bt);
9af02d86e11dc40 Jeffy Chen             2017-01-23  1719  		if (card->plt_wake_cfg->wake_by_bt)
9af02d86e11dc40 Jeffy Chen             2017-01-23  1720  			/* Undo our disable, since interrupt handler already
9af02d86e11dc40 Jeffy Chen             2017-01-23  1721  			 * did this.
9af02d86e11dc40 Jeffy Chen             2017-01-23  1722  			 */
9af02d86e11dc40 Jeffy Chen             2017-01-23  1723  			enable_irq(card->plt_wake_cfg->irq_bt);
bb7f4f0bcee6844 Xinming Hu             2016-04-26  1724  	}
bb7f4f0bcee6844 Xinming Hu             2016-04-26  1725  
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1726  	return 0;
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1727  }
ba54a16ffacfc71 Amitkumar Karwar       2012-04-25  1728  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.