All of lore.kernel.org
 help / color / mirror / Atom feed
From: Syed Saba kareem <Syed.SabaKareem@amd.com>
To: <broonie@kernel.org>, <alsa-devel@alsa-project.org>
Cc: <Vijendar.Mukunda@amd.com>, <Basavaraj.Hiregoudar@amd.com>,
	<Sunil-kumar.Dommati@amd.com>, <mario.limonciello@amd.com>,
	Syed Saba kareem <Syed.SabaKareem@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 09/13] ASoC: amd: add acp6.2 pdm driver pm ops
Date: Fri, 12 Aug 2022 17:37:27 +0530	[thread overview]
Message-ID: <20220812120731.788052-10-Syed.SabaKareem@amd.com> (raw)
In-Reply-To: <20220812120731.788052-1-Syed.SabaKareem@amd.com>

Add acp6.2 pdm driver pm ops.

Signed-off-by: Syed Saba Kareem <Syed.SabaKareem@amd.com>
---
 sound/soc/amd/ps/ps-pdm-dma.c | 57 +++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/sound/soc/amd/ps/ps-pdm-dma.c b/sound/soc/amd/ps/ps-pdm-dma.c
index a98a2015015d..7400fc7e1afd 100644
--- a/sound/soc/amd/ps/ps-pdm-dma.c
+++ b/sound/soc/amd/ps/ps-pdm-dma.c
@@ -12,6 +12,7 @@
 #include <sound/pcm_params.h>
 #include <sound/soc.h>
 #include <sound/soc-dai.h>
+#include <linux/pm_runtime.h>
 
 #include "acp62.h"
 
@@ -374,13 +375,69 @@ static int acp62_pdm_audio_probe(struct platform_device *pdev)
 
 		return -ENODEV;
 	}
+	pm_runtime_set_autosuspend_delay(&pdev->dev, ACP_SUSPEND_DELAY_MS);
+	pm_runtime_use_autosuspend(&pdev->dev);
+	pm_runtime_enable(&pdev->dev);
+	pm_runtime_allow(&pdev->dev);
 	return 0;
 }
 
+static int acp62_pdm_audio_remove(struct platform_device *pdev)
+{
+	pm_runtime_disable(&pdev->dev);
+	return 0;
+}
+
+static int __maybe_unused acp62_pdm_resume(struct device *dev)
+{
+	struct pdm_dev_data *adata;
+	struct snd_pcm_runtime *runtime;
+	struct pdm_stream_instance *rtd;
+	u32 period_bytes, buffer_len;
+
+	adata = dev_get_drvdata(dev);
+	if (adata->capture_stream && adata->capture_stream->runtime) {
+		runtime = adata->capture_stream->runtime;
+		rtd = runtime->private_data;
+		period_bytes = frames_to_bytes(runtime, runtime->period_size);
+		buffer_len = frames_to_bytes(runtime, runtime->buffer_size);
+		acp62_config_dma(rtd, SNDRV_PCM_STREAM_CAPTURE);
+		acp62_init_pdm_ring_buffer(PDM_MEM_WINDOW_START, buffer_len,
+					   period_bytes, adata->acp62_base);
+	}
+	acp62_enable_pdm_interrupts(adata->acp62_base);
+	return 0;
+}
+
+static int __maybe_unused acp62_pdm_suspend(struct device *dev)
+{
+	struct pdm_dev_data *adata;
+
+	adata = dev_get_drvdata(dev);
+	acp62_disable_pdm_interrupts(adata->acp62_base);
+	return 0;
+}
+
+static int __maybe_unused acp62_pdm_runtime_resume(struct device *dev)
+{
+	struct pdm_dev_data *adata;
+
+	adata = dev_get_drvdata(dev);
+	acp62_enable_pdm_interrupts(adata->acp62_base);
+	return 0;
+}
+
+static const struct dev_pm_ops acp62_pdm_pm_ops = {
+	SET_RUNTIME_PM_OPS(acp62_pdm_suspend, acp62_pdm_runtime_resume, NULL)
+	SET_SYSTEM_SLEEP_PM_OPS(acp62_pdm_suspend, acp62_pdm_resume)
+};
+
 static struct platform_driver acp62_pdm_dma_driver = {
 	.probe = acp62_pdm_audio_probe,
+	.remove = acp62_pdm_audio_remove,
 	.driver = {
 		.name = "acp_ps_pdm_dma",
+		.pm = &acp62_pdm_pm_ops,
 	},
 };
 
-- 
2.25.1


WARNING: multiple messages have this Message-ID (diff)
From: Syed Saba kareem <Syed.SabaKareem@amd.com>
To: <broonie@kernel.org>, <alsa-devel@alsa-project.org>
Cc: Sunil-kumar.Dommati@amd.com,
	open list <linux-kernel@vger.kernel.org>,
	Basavaraj.Hiregoudar@amd.com, Takashi Iwai <tiwai@suse.com>,
	Liam Girdwood <lgirdwood@gmail.com>,
	mario.limonciello@amd.com, Vijendar.Mukunda@amd.com,
	Syed Saba kareem <Syed.SabaKareem@amd.com>
Subject: [PATCH 09/13] ASoC: amd: add acp6.2 pdm driver pm ops
Date: Fri, 12 Aug 2022 17:37:27 +0530	[thread overview]
Message-ID: <20220812120731.788052-10-Syed.SabaKareem@amd.com> (raw)
In-Reply-To: <20220812120731.788052-1-Syed.SabaKareem@amd.com>

Add acp6.2 pdm driver pm ops.

Signed-off-by: Syed Saba Kareem <Syed.SabaKareem@amd.com>
---
 sound/soc/amd/ps/ps-pdm-dma.c | 57 +++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/sound/soc/amd/ps/ps-pdm-dma.c b/sound/soc/amd/ps/ps-pdm-dma.c
index a98a2015015d..7400fc7e1afd 100644
--- a/sound/soc/amd/ps/ps-pdm-dma.c
+++ b/sound/soc/amd/ps/ps-pdm-dma.c
@@ -12,6 +12,7 @@
 #include <sound/pcm_params.h>
 #include <sound/soc.h>
 #include <sound/soc-dai.h>
+#include <linux/pm_runtime.h>
 
 #include "acp62.h"
 
@@ -374,13 +375,69 @@ static int acp62_pdm_audio_probe(struct platform_device *pdev)
 
 		return -ENODEV;
 	}
+	pm_runtime_set_autosuspend_delay(&pdev->dev, ACP_SUSPEND_DELAY_MS);
+	pm_runtime_use_autosuspend(&pdev->dev);
+	pm_runtime_enable(&pdev->dev);
+	pm_runtime_allow(&pdev->dev);
 	return 0;
 }
 
+static int acp62_pdm_audio_remove(struct platform_device *pdev)
+{
+	pm_runtime_disable(&pdev->dev);
+	return 0;
+}
+
+static int __maybe_unused acp62_pdm_resume(struct device *dev)
+{
+	struct pdm_dev_data *adata;
+	struct snd_pcm_runtime *runtime;
+	struct pdm_stream_instance *rtd;
+	u32 period_bytes, buffer_len;
+
+	adata = dev_get_drvdata(dev);
+	if (adata->capture_stream && adata->capture_stream->runtime) {
+		runtime = adata->capture_stream->runtime;
+		rtd = runtime->private_data;
+		period_bytes = frames_to_bytes(runtime, runtime->period_size);
+		buffer_len = frames_to_bytes(runtime, runtime->buffer_size);
+		acp62_config_dma(rtd, SNDRV_PCM_STREAM_CAPTURE);
+		acp62_init_pdm_ring_buffer(PDM_MEM_WINDOW_START, buffer_len,
+					   period_bytes, adata->acp62_base);
+	}
+	acp62_enable_pdm_interrupts(adata->acp62_base);
+	return 0;
+}
+
+static int __maybe_unused acp62_pdm_suspend(struct device *dev)
+{
+	struct pdm_dev_data *adata;
+
+	adata = dev_get_drvdata(dev);
+	acp62_disable_pdm_interrupts(adata->acp62_base);
+	return 0;
+}
+
+static int __maybe_unused acp62_pdm_runtime_resume(struct device *dev)
+{
+	struct pdm_dev_data *adata;
+
+	adata = dev_get_drvdata(dev);
+	acp62_enable_pdm_interrupts(adata->acp62_base);
+	return 0;
+}
+
+static const struct dev_pm_ops acp62_pdm_pm_ops = {
+	SET_RUNTIME_PM_OPS(acp62_pdm_suspend, acp62_pdm_runtime_resume, NULL)
+	SET_SYSTEM_SLEEP_PM_OPS(acp62_pdm_suspend, acp62_pdm_resume)
+};
+
 static struct platform_driver acp62_pdm_dma_driver = {
 	.probe = acp62_pdm_audio_probe,
+	.remove = acp62_pdm_audio_remove,
 	.driver = {
 		.name = "acp_ps_pdm_dma",
+		.pm = &acp62_pdm_pm_ops,
 	},
 };
 
-- 
2.25.1


  parent reply	other threads:[~2022-08-12 12:12 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-12 12:07 [PATCH 00/13] Add Pink Sardine platform ASoC driver Syed Saba kareem
2022-08-12 12:07 ` [PATCH 01/13] ASoC: amd: add Pink Sardine platform ACP IP register header Syed Saba kareem
2022-08-12 12:07   ` Syed Saba kareem
2022-08-12 12:07 ` [PATCH 02/13] ASoC: amd: add Pink Sardine ACP PCI driver Syed Saba kareem
2022-08-12 12:07   ` Syed Saba kareem
2022-08-12 14:19   ` Amadeusz Sławiński
2022-08-12 14:19     ` Amadeusz Sławiński
2022-08-16  6:00     ` Syed Saba Kareem
2022-08-16  6:00       ` Syed Saba Kareem
2022-08-12 12:07 ` [PATCH 03/13] ASoC: amd: add acp6.2 init/de-init functions Syed Saba kareem
2022-08-12 12:07   ` Syed Saba kareem
2022-08-12 12:33   ` Mark Brown
2022-08-12 12:33     ` Mark Brown
2022-08-16  5:47     ` Syed Saba Kareem
2022-08-16  5:47       ` Syed Saba Kareem
2022-08-12 14:19   ` Amadeusz Sławiński
2022-08-12 14:19     ` Amadeusz Sławiński
2022-08-16  6:48     ` Syed Saba Kareem
2022-08-16  6:48       ` Syed Saba Kareem
2022-08-12 12:07 ` [PATCH 04/13] ASoC: amd: add platform devices for acp6.2 pdm driver and dmic driver Syed Saba kareem
2022-08-12 12:07   ` Syed Saba kareem
2022-08-12 14:20   ` Amadeusz Sławiński
2022-08-12 14:20     ` Amadeusz Sławiński
2022-08-16  6:49     ` Syed Saba Kareem
2022-08-16  6:49       ` Syed Saba Kareem
2022-08-12 12:07 ` [PATCH 05/13] ASoC: amd: add acp6.2 pdm platform driver Syed Saba kareem
2022-08-12 12:07   ` Syed Saba kareem
2022-08-12 14:20   ` Amadeusz Sławiński
2022-08-12 14:20     ` Amadeusz Sławiński
2022-08-16  6:50     ` Syed Saba Kareem
2022-08-12 12:07 ` [PATCH 06/13] ASoC: amd: add acp6.2 irq handler Syed Saba kareem
2022-08-12 12:07   ` Syed Saba kareem
2022-08-12 12:07 ` [PATCH 07/13] ASoC: amd: add acp6.2 pdm driver dma ops Syed Saba kareem
2022-08-12 12:07   ` Syed Saba kareem
2022-08-12 14:20   ` Amadeusz Sławiński
2022-08-16  7:02     ` Syed Saba Kareem
2022-08-16  7:02       ` Syed Saba Kareem
2022-08-12 12:07 ` [PATCH 08/13] ASoC: amd: add acp6.2 pci driver pm ops Syed Saba kareem
2022-08-12 12:07   ` Syed Saba kareem
2022-08-12 12:07 ` Syed Saba kareem [this message]
2022-08-12 12:07   ` [PATCH 09/13] ASoC: amd: add acp6.2 pdm " Syed Saba kareem
2022-08-12 12:07 ` [PATCH 10/13] ASoC: amd: enable Pink Sardine acp6.2 drivers build Syed Saba kareem
2022-08-12 12:07   ` Syed Saba kareem
2022-08-12 14:05   ` Mark Brown
2022-08-16  5:49     ` Syed Saba Kareem
2022-08-27 16:50     ` Syed Saba Kareem
2022-08-27 16:50       ` Syed Saba Kareem
2022-08-12 12:07 ` [PATCH 11/13] ASoC: amd: create platform device for acp6.2 machine driver Syed Saba kareem
2022-08-12 12:07   ` Syed Saba kareem
2022-08-12 12:07 ` [PATCH 12/13] ASoC: amd: add Pink Sardine machine driver using dmic Syed Saba kareem
2022-08-12 12:07   ` Syed Saba kareem
2022-08-12 12:07 ` [PATCH 13/13] ASoC: amd: enable Pink sardine platform machine driver build Syed Saba kareem
2022-08-12 12:07   ` Syed Saba kareem

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=20220812120731.788052-10-Syed.SabaKareem@amd.com \
    --to=syed.sabakareem@amd.com \
    --cc=Basavaraj.Hiregoudar@amd.com \
    --cc=Sunil-kumar.Dommati@amd.com \
    --cc=Vijendar.Mukunda@amd.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mario.limonciello@amd.com \
    --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.