lkml.org 
[lkml]   [2019]   [Sep]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 4/5] ASoC: amd: added pmops for pci driver
Date
Runtime powermanagement is added for PCI driver.
When there is no activity for at least 10 secs driver
suspends automatically.Runtime- Suspend and resume Stub functions
are added.

Signed-off-by: Ravulapati Vishnu vardhan rao <Vishnuvardhanrao.Ravulapati@amd.com>
Reviewed-by: Vijendar Mukunda <vijendar.mukunda@amd.com>
---
sound/soc/amd/raven/pci-acp3x.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

diff --git a/sound/soc/amd/raven/pci-acp3x.c b/sound/soc/amd/raven/pci-acp3x.c
index c0b8fad..6fbb720 100644
--- a/sound/soc/amd/raven/pci-acp3x.c
+++ b/sound/soc/amd/raven/pci-acp3x.c
@@ -170,6 +170,11 @@ static int snd_acp3x_probe(struct pci_dev *pci,
ret = -ENODEV;
goto unmap_mmio;
}
+ pm_runtime_set_autosuspend_delay(&pci->dev, 10000);
+ pm_runtime_use_autosuspend(&pci->dev);
+ pm_runtime_set_active(&pci->dev);
+ pm_runtime_put_noidle(&pci->dev);
+ pm_runtime_enable(&pci->dev);
return 0;

unmap_mmio:
@@ -189,6 +194,23 @@ static int snd_acp3x_probe(struct pci_dev *pci,
return -ENODEV;
}

+static int snd_acp3x_suspend(struct device *dev)
+{
+ return 0;
+}
+
+static int snd_acp3x_resume(struct device *dev)
+{
+ return 0;
+}
+
+static const struct dev_pm_ops acp3x_pm = {
+ .runtime_suspend = snd_acp3x_suspend,
+ .runtime_resume = snd_acp3x_resume,
+ .resume = snd_acp3x_resume,
+
+};
+
static void snd_acp3x_remove(struct pci_dev *pci)
{
struct acp3x_dev_data *adata = pci_get_drvdata(pci);
@@ -196,6 +218,8 @@ static void snd_acp3x_remove(struct pci_dev *pci)
kfree(adata->res);
kfree(adata->cell);
iounmap(adata->acp3x_base);
+ pm_runtime_disable(&pci->dev);
+ pm_runtime_get_noresume(&pci->dev);
pci_disable_msi(pci);
pci_release_regions(pci);
pci_disable_device(pci);
@@ -214,6 +238,9 @@ static struct pci_driver acp3x_driver = {
.id_table = snd_acp3x_ids,
.probe = snd_acp3x_probe,
.remove = snd_acp3x_remove,
+ .driver = {
+ .pm = &acp3x_pm,
+ }
};

module_pci_driver(acp3x_driver);
--
2.7.4
\
 
 \ /
  Last update: 2019-09-26 14:16    [W:0.101 / U:11.084 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site