Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0c0536dc authored by Tiger Yu's avatar Tiger Yu Committed by Gerrit - the friendly Code Review server
Browse files

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: default avatarTiger Yu <tfyu@codeaurora.org>
parent fd8f045d
Loading
Loading
Loading
Loading
+22 −1
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2016-2019, The Linux Foundation. All rights reserved. */
/* Copyright (c) 2016-2020, The Linux Foundation. All rights reserved. */

#include <linux/cma.h>
#include <linux/firmware.h>
@@ -2491,6 +2491,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",
@@ -2509,6 +2512,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",
@@ -2527,6 +2533,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",
@@ -2545,6 +2554,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",
@@ -2558,6 +2570,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);
}

@@ -2570,6 +2585,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;
@@ -2587,6 +2605,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;