From 86af8dc6c39b08549661cf1be02a294540eb2ad6 Mon Sep 17 00:00:00 2001 From: Tiger Yu Date: Wed, 15 Jan 2020 10:06:25 +0800 Subject: [PATCH] cnss2: Add sanity check for cnss pm runtime APIs The cnss pm runtime APIs will be bypassed if the RPM is not enabled. Change-Id: I41bbf30e1f12426670606b90a88e3af4d0840c9c Signed-off-by: Tiger Yu --- drivers/net/wireless/cnss2/pci.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/net/wireless/cnss2/pci.c b/drivers/net/wireless/cnss2/pci.c index 5054a0dd78f6..0860b9cc6e34 100644 --- a/drivers/net/wireless/cnss2/pci.c +++ b/drivers/net/wireless/cnss2/pci.c @@ -2547,6 +2547,9 @@ int cnss_pci_pm_request_resume(struct cnss_pci_data *pci_priv) dev = &pci_priv->pci_dev->dev; + if (!pm_runtime_enabled(dev)) + return 0; + status = dev->power.runtime_status; if (status == RPM_SUSPENDING || status == RPM_SUSPENDED) cnss_pr_vdbg("Runtime PM resume is requested by %ps\n", @@ -2565,6 +2568,9 @@ int cnss_pci_pm_runtime_resume(struct cnss_pci_data *pci_priv) dev = &pci_priv->pci_dev->dev; + if (!pm_runtime_enabled(dev)) + return 0; + status = dev->power.runtime_status; if (status == RPM_SUSPENDING || status == RPM_SUSPENDED) cnss_pr_vdbg("Runtime PM resume is requested by %ps\n", @@ -2583,6 +2589,9 @@ int cnss_pci_pm_runtime_get(struct cnss_pci_data *pci_priv) dev = &pci_priv->pci_dev->dev; + if (!pm_runtime_enabled(dev)) + return 0; + status = dev->power.runtime_status; if (status == RPM_SUSPENDING || status == RPM_SUSPENDED) cnss_pr_vdbg("Runtime PM resume is requested by %ps\n", @@ -2601,6 +2610,9 @@ int cnss_pci_pm_runtime_get_sync(struct cnss_pci_data *pci_priv) dev = &pci_priv->pci_dev->dev; + if (!pm_runtime_enabled(dev)) + return 0; + status = dev->power.runtime_status; if (status == RPM_SUSPENDING || status == RPM_SUSPENDED) cnss_pr_vdbg("Runtime PM resume is requested by %ps\n", @@ -2614,6 +2626,9 @@ void cnss_pci_pm_runtime_get_noresume(struct cnss_pci_data *pci_priv) if (!pci_priv) return; + if (!pm_runtime_enabled(&pci_priv->pci_dev->dev)) + return; + pm_runtime_get_noresume(&pci_priv->pci_dev->dev); } @@ -2626,6 +2641,9 @@ int cnss_pci_pm_runtime_put_autosuspend(struct cnss_pci_data *pci_priv) dev = &pci_priv->pci_dev->dev; + if (!pm_runtime_enabled(dev)) + return 0; + if (atomic_read(&dev->power.usage_count) == 0) { cnss_pr_dbg("Ignore excessive runtime PM put operation\n"); return -EINVAL; @@ -2643,6 +2661,9 @@ void cnss_pci_pm_runtime_put_noidle(struct cnss_pci_data *pci_priv) dev = &pci_priv->pci_dev->dev; + if (!pm_runtime_enabled(dev)) + return; + if (atomic_read(&dev->power.usage_count) == 0) { cnss_pr_dbg("Ignore excessive runtime PM put operation\n"); return;