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

Commit 3aa17db6 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "cnss2: Fix minor issues related to runtime PM debugfs interface"

parents 4fa3b029 c2e5e5e9
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -194,7 +194,7 @@ static ssize_t cnss_dev_boot_debug_write(struct file *fp,
		ret = -EINVAL;
		ret = -EINVAL;
	}
	}


	if (ret)
	if (ret < 0)
		return ret;
		return ret;


	return count;
	return count;
@@ -482,7 +482,7 @@ static ssize_t cnss_runtime_pm_debug_write(struct file *fp,
		ret = -EINVAL;
		ret = -EINVAL;
	}
	}


	if (ret)
	if (ret < 0)
		return ret;
		return ret;


	return count;
	return count;
@@ -493,6 +493,8 @@ static int cnss_runtime_pm_debug_show(struct seq_file *s, void *data)
	seq_puts(s, "\nUsage: echo <action> > <debugfs_path>/cnss/runtime_pm\n");
	seq_puts(s, "\nUsage: echo <action> > <debugfs_path>/cnss/runtime_pm\n");
	seq_puts(s, "<action> can be one of below:\n");
	seq_puts(s, "<action> can be one of below:\n");
	seq_puts(s, "usage_count: get runtime PM usage count\n");
	seq_puts(s, "usage_count: get runtime PM usage count\n");
	seq_puts(s, "reques_resume: do async runtime PM resume\n");
	seq_puts(s, "resume: do sync runtime PM resume\n");
	seq_puts(s, "get: do runtime PM get\n");
	seq_puts(s, "get: do runtime PM get\n");
	seq_puts(s, "get_noresume: do runtime PM get noresume\n");
	seq_puts(s, "get_noresume: do runtime PM get noresume\n");
	seq_puts(s, "put_noidle: do runtime PM put noidle\n");
	seq_puts(s, "put_noidle: do runtime PM put noidle\n");
+18 −0
Original line number Original line Diff line number Diff line
@@ -2084,17 +2084,35 @@ void cnss_pci_pm_runtime_get_noresume(struct cnss_pci_data *pci_priv)


int cnss_pci_pm_runtime_put_autosuspend(struct cnss_pci_data *pci_priv)
int cnss_pci_pm_runtime_put_autosuspend(struct cnss_pci_data *pci_priv)
{
{
	struct device *dev;

	if (!pci_priv)
	if (!pci_priv)
		return -ENODEV;
		return -ENODEV;


	dev = &pci_priv->pci_dev->dev;

	if (atomic_read(&dev->power.usage_count) == 0) {
		cnss_pr_dbg("Ignore excessive runtime PM put operation\n");
		return -EINVAL;
	}

	return pm_runtime_put_autosuspend(&pci_priv->pci_dev->dev);
	return pm_runtime_put_autosuspend(&pci_priv->pci_dev->dev);
}
}


void cnss_pci_pm_runtime_put_noidle(struct cnss_pci_data *pci_priv)
void cnss_pci_pm_runtime_put_noidle(struct cnss_pci_data *pci_priv)
{
{
	struct device *dev;

	if (!pci_priv)
	if (!pci_priv)
		return;
		return;


	dev = &pci_priv->pci_dev->dev;

	if (atomic_read(&dev->power.usage_count) == 0) {
		cnss_pr_dbg("Ignore excessive runtime PM put operation\n");
		return;
	}

	pm_runtime_put_noidle(&pci_priv->pci_dev->dev);
	pm_runtime_put_noidle(&pci_priv->pci_dev->dev);
}
}