All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
To: <broonie@kernel.org>, <alsa-devel@alsa-project.org>
Cc: <Alexander.Deucher@amd.com>, <Basavaraj.Hiregoudar@amd.com>,
	<Sunil-kumar.Dommati@amd.com>, <Mario.Limonciello@amd.com>,
	<Richard.Gong@amd.com>,
	Vijendar Mukunda <Vijendar.Mukunda@amd.com>,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	Jaroslav Kysela <perex@perex.cz>, "Takashi Iwai" <tiwai@suse.com>,
	open list <linux-kernel@vger.kernel.org>
Subject: [PATCH 08/13] ASoC: amd: add acp6x pci driver pm ops
Date: Mon, 11 Oct 2021 11:26:16 +0530	[thread overview]
Message-ID: <20211011055621.13240-9-Vijendar.Mukunda@amd.com> (raw)
In-Reply-To: <20211011055621.13240-1-Vijendar.Mukunda@amd.com>

Add acp6x pci driver pm ops.

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
---
 sound/soc/amd/yc/acp6x.h     |  3 +++
 sound/soc/amd/yc/pci-acp6x.c | 40 ++++++++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git a/sound/soc/amd/yc/acp6x.h b/sound/soc/amd/yc/acp6x.h
index 3f83de229409..b0d3f6a9d0ce 100644
--- a/sound/soc/amd/yc/acp6x.h
+++ b/sound/soc/amd/yc/acp6x.h
@@ -52,6 +52,9 @@
 #define MAX_BUFFER (CAPTURE_MAX_PERIOD_SIZE * CAPTURE_MAX_NUM_PERIODS)
 #define MIN_BUFFER MAX_BUFFER
 
+/* time in ms for runtime suspend delay */
+#define ACP_SUSPEND_DELAY_MS	2000
+
 enum acp_config {
 	ACP_CONFIG_0 = 0,
 	ACP_CONFIG_1,
diff --git a/sound/soc/amd/yc/pci-acp6x.c b/sound/soc/amd/yc/pci-acp6x.c
index 86b33f401e12..5f07db987cca 100644
--- a/sound/soc/amd/yc/pci-acp6x.c
+++ b/sound/soc/amd/yc/pci-acp6x.c
@@ -11,6 +11,7 @@
 #include <linux/platform_device.h>
 #include <linux/interrupt.h>
 #include <sound/pcm_params.h>
+#include <linux/pm_runtime.h>
 
 #include "acp6x.h"
 
@@ -245,6 +246,11 @@ static int snd_acp6x_probe(struct pci_dev *pci,
 		dev_err(&pci->dev, "ACP PCI IRQ request failed\n");
 		goto unregister_devs;
 	}
+	pm_runtime_set_autosuspend_delay(&pci->dev, ACP_SUSPEND_DELAY_MS);
+	pm_runtime_use_autosuspend(&pci->dev);
+	pm_runtime_put_noidle(&pci->dev);
+	pm_runtime_allow(&pci->dev);
+
 	return 0;
 unregister_devs:
 	for (--index; index >= 0; index--)
@@ -260,6 +266,35 @@ static int snd_acp6x_probe(struct pci_dev *pci,
 	return ret;
 }
 
+static int __maybe_unused snd_acp6x_suspend(struct device *dev)
+{
+	struct acp6x_dev_data *adata;
+	int ret;
+
+	adata = dev_get_drvdata(dev);
+	ret = acp6x_deinit(adata->acp6x_base);
+	if (ret)
+		dev_err(dev, "ACP de-init failed\n");
+	return ret;
+}
+
+static int __maybe_unused snd_acp6x_resume(struct device *dev)
+{
+	struct acp6x_dev_data *adata;
+	int ret;
+
+	adata = dev_get_drvdata(dev);
+	ret = acp6x_init(adata->acp6x_base);
+	if (ret)
+		dev_err(dev, "ACP init failed\n");
+	return ret;
+}
+
+static const struct dev_pm_ops acp6x_pm = {
+	SET_RUNTIME_PM_OPS(snd_acp6x_suspend, snd_acp6x_resume, NULL)
+	SET_SYSTEM_SLEEP_PM_OPS(snd_acp6x_suspend, snd_acp6x_resume)
+};
+
 static void snd_acp6x_remove(struct pci_dev *pci)
 {
 	struct acp6x_dev_data *adata;
@@ -273,6 +308,8 @@ static void snd_acp6x_remove(struct pci_dev *pci)
 	ret = acp6x_deinit(adata->acp6x_base);
 	if (ret)
 		dev_err(&pci->dev, "ACP de-init failed\n");
+	pm_runtime_forbid(&pci->dev);
+	pm_runtime_get_noresume(&pci->dev);
 	pci_release_regions(pci);
 	pci_disable_device(pci);
 }
@@ -290,6 +327,9 @@ static struct pci_driver yc_acp6x_driver  = {
 	.id_table = snd_acp6x_ids,
 	.probe = snd_acp6x_probe,
 	.remove = snd_acp6x_remove,
+	.driver = {
+		.pm = &acp6x_pm,
+	}
 };
 
 module_pci_driver(yc_acp6x_driver);
-- 
2.25.1


WARNING: multiple messages have this Message-ID (diff)
From: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
To: <broonie@kernel.org>, <alsa-devel@alsa-project.org>
Cc: Sunil-kumar.Dommati@amd.com, Richard.Gong@amd.com,
	Basavaraj.Hiregoudar@amd.com, Takashi Iwai <tiwai@suse.com>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Mario.Limonciello@amd.com,
	Vijendar Mukunda <Vijendar.Mukunda@amd.com>,
	Alexander.Deucher@amd.com,
	open list <linux-kernel@vger.kernel.org>
Subject: [PATCH 08/13] ASoC: amd: add acp6x pci driver pm ops
Date: Mon, 11 Oct 2021 11:26:16 +0530	[thread overview]
Message-ID: <20211011055621.13240-9-Vijendar.Mukunda@amd.com> (raw)
In-Reply-To: <20211011055621.13240-1-Vijendar.Mukunda@amd.com>

Add acp6x pci driver pm ops.

Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
---
 sound/soc/amd/yc/acp6x.h     |  3 +++
 sound/soc/amd/yc/pci-acp6x.c | 40 ++++++++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git a/sound/soc/amd/yc/acp6x.h b/sound/soc/amd/yc/acp6x.h
index 3f83de229409..b0d3f6a9d0ce 100644
--- a/sound/soc/amd/yc/acp6x.h
+++ b/sound/soc/amd/yc/acp6x.h
@@ -52,6 +52,9 @@
 #define MAX_BUFFER (CAPTURE_MAX_PERIOD_SIZE * CAPTURE_MAX_NUM_PERIODS)
 #define MIN_BUFFER MAX_BUFFER
 
+/* time in ms for runtime suspend delay */
+#define ACP_SUSPEND_DELAY_MS	2000
+
 enum acp_config {
 	ACP_CONFIG_0 = 0,
 	ACP_CONFIG_1,
diff --git a/sound/soc/amd/yc/pci-acp6x.c b/sound/soc/amd/yc/pci-acp6x.c
index 86b33f401e12..5f07db987cca 100644
--- a/sound/soc/amd/yc/pci-acp6x.c
+++ b/sound/soc/amd/yc/pci-acp6x.c
@@ -11,6 +11,7 @@
 #include <linux/platform_device.h>
 #include <linux/interrupt.h>
 #include <sound/pcm_params.h>
+#include <linux/pm_runtime.h>
 
 #include "acp6x.h"
 
@@ -245,6 +246,11 @@ static int snd_acp6x_probe(struct pci_dev *pci,
 		dev_err(&pci->dev, "ACP PCI IRQ request failed\n");
 		goto unregister_devs;
 	}
+	pm_runtime_set_autosuspend_delay(&pci->dev, ACP_SUSPEND_DELAY_MS);
+	pm_runtime_use_autosuspend(&pci->dev);
+	pm_runtime_put_noidle(&pci->dev);
+	pm_runtime_allow(&pci->dev);
+
 	return 0;
 unregister_devs:
 	for (--index; index >= 0; index--)
@@ -260,6 +266,35 @@ static int snd_acp6x_probe(struct pci_dev *pci,
 	return ret;
 }
 
+static int __maybe_unused snd_acp6x_suspend(struct device *dev)
+{
+	struct acp6x_dev_data *adata;
+	int ret;
+
+	adata = dev_get_drvdata(dev);
+	ret = acp6x_deinit(adata->acp6x_base);
+	if (ret)
+		dev_err(dev, "ACP de-init failed\n");
+	return ret;
+}
+
+static int __maybe_unused snd_acp6x_resume(struct device *dev)
+{
+	struct acp6x_dev_data *adata;
+	int ret;
+
+	adata = dev_get_drvdata(dev);
+	ret = acp6x_init(adata->acp6x_base);
+	if (ret)
+		dev_err(dev, "ACP init failed\n");
+	return ret;
+}
+
+static const struct dev_pm_ops acp6x_pm = {
+	SET_RUNTIME_PM_OPS(snd_acp6x_suspend, snd_acp6x_resume, NULL)
+	SET_SYSTEM_SLEEP_PM_OPS(snd_acp6x_suspend, snd_acp6x_resume)
+};
+
 static void snd_acp6x_remove(struct pci_dev *pci)
 {
 	struct acp6x_dev_data *adata;
@@ -273,6 +308,8 @@ static void snd_acp6x_remove(struct pci_dev *pci)
 	ret = acp6x_deinit(adata->acp6x_base);
 	if (ret)
 		dev_err(&pci->dev, "ACP de-init failed\n");
+	pm_runtime_forbid(&pci->dev);
+	pm_runtime_get_noresume(&pci->dev);
 	pci_release_regions(pci);
 	pci_disable_device(pci);
 }
@@ -290,6 +327,9 @@ static struct pci_driver yc_acp6x_driver  = {
 	.id_table = snd_acp6x_ids,
 	.probe = snd_acp6x_probe,
 	.remove = snd_acp6x_remove,
+	.driver = {
+		.pm = &acp6x_pm,
+	}
 };
 
 module_pci_driver(yc_acp6x_driver);
-- 
2.25.1


  parent reply	other threads:[~2021-10-11  5:39 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-11  5:56 [PATCH 00/13] Add Yellow Carp platform ASoC driver Vijendar Mukunda
2021-10-11  5:56 ` [PATCH 01/13] ASoC: amd: add Yellow Carp ACP6x IP register header Vijendar Mukunda
2021-10-11  5:56   ` Vijendar Mukunda
2021-10-11  5:56 ` [PATCH 02/13] ASoC: amd: add Yellow Carp ACP PCI driver Vijendar Mukunda
2021-10-11  5:56   ` Vijendar Mukunda
2021-10-11 11:01   ` Gong, Richard
2021-10-11 11:43     ` Mukunda,Vijendar
2021-10-11 11:43       ` Mukunda,Vijendar
2021-10-11  5:56 ` [PATCH 03/13] ASoC: amd: add acp6x init/de-init functions Vijendar Mukunda
2021-10-11  5:56   ` Vijendar Mukunda
2021-10-11 11:04   ` Gong, Richard
2021-10-11 11:04     ` Gong, Richard
2021-10-11 11:06   ` Gong, Richard
2021-10-11 11:06     ` Gong, Richard
2021-10-11 11:40     ` Mukunda,Vijendar
2021-10-11 11:40       ` Mukunda,Vijendar
2021-10-11  5:56 ` [PATCH 04/13] ASoC: amd: add platform devices for acp6x pdm driver and dmic driver Vijendar Mukunda
2021-10-11  5:56   ` Vijendar Mukunda
2021-10-11  5:56 ` [PATCH 05/13] ASoC: amd: add acp6x pdm platform driver Vijendar Mukunda
2021-10-11  5:56   ` Vijendar Mukunda
2021-10-11  5:56 ` [PATCH 06/13] ASoC: amd: add acp6x irq handler Vijendar Mukunda
2021-10-11  5:56   ` Vijendar Mukunda
2021-10-11  8:58   ` Joe Perches
2021-10-11  8:58     ` Joe Perches
2021-10-11  9:28     ` Mukunda,Vijendar
2021-10-11  9:28       ` Mukunda,Vijendar
2021-10-11  5:56 ` [PATCH 07/13] ASoC: amd: add acp6x pdm driver dma ops Vijendar Mukunda
2021-10-11  5:56   ` Vijendar Mukunda
2021-10-11  5:56 ` Vijendar Mukunda [this message]
2021-10-11  5:56   ` [PATCH 08/13] ASoC: amd: add acp6x pci driver pm ops Vijendar Mukunda
2021-10-11  5:56 ` [PATCH 09/13] ASoC: amd: add acp6x pdm " Vijendar Mukunda
2021-10-11  5:56   ` Vijendar Mukunda
2021-10-11  5:56 ` [PATCH 10/13] ASoC: amd: enable Yellow carp acp6x drivers build Vijendar Mukunda
2021-10-11  5:56   ` Vijendar Mukunda
2021-10-11  5:56 ` [PATCH 11/13] ASoC: amd: create platform device for acp6x machine driver Vijendar Mukunda
2021-10-11  5:56   ` Vijendar Mukunda
2021-10-11  5:56 ` [PATCH 12/13] ASoC: amd: add YC machine driver using dmic Vijendar Mukunda
2021-10-11  5:56   ` Vijendar Mukunda
2021-10-11  5:56 ` [PATCH 13/13] ASoC: amd: enable yc machine driver build Vijendar Mukunda
2021-10-11  5:56   ` Vijendar Mukunda
2021-10-11  7:55   ` Randy Dunlap
2021-10-11  7:55     ` Randy Dunlap
2021-10-11  8:25     ` Mukunda,Vijendar
2021-10-11  8:25       ` Mukunda,Vijendar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211011055621.13240-9-Vijendar.Mukunda@amd.com \
    --to=vijendar.mukunda@amd.com \
    --cc=Alexander.Deucher@amd.com \
    --cc=Basavaraj.Hiregoudar@amd.com \
    --cc=Mario.Limonciello@amd.com \
    --cc=Richard.Gong@amd.com \
    --cc=Sunil-kumar.Dommati@amd.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=tiwai@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.