All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rakesh Ughreja <rakesh.a.ughreja@intel.com>
To: alsa-devel@alsa-project.org, broonie@kernel.org, tiwai@suse.de,
	liam.r.girdwood@linux.intel.com
Cc: vinod.koul@intel.com, patches.audio@intel.com,
	Rakesh Ughreja <rakesh.a.ughreja@intel.com>,
	pierre-louis.bossart@linux.intel.com
Subject: [RFC v3 09/11] ASoC: hdac_hda: add runtime PM support
Date: Fri, 15 Dec 2017 17:00:46 +0530	[thread overview]
Message-ID: <1513337448-31685-10-git-send-email-rakesh.a.ughreja@intel.com> (raw)
In-Reply-To: <1513337448-31685-1-git-send-email-rakesh.a.ughreja@intel.com>

Add power management support.

Signed-off-by: Rakesh Ughreja <rakesh.a.ughreja@intel.com>
---
 sound/soc/codecs/hdac_hda.c | 49 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/sound/soc/codecs/hdac_hda.c b/sound/soc/codecs/hdac_hda.c
index 4b4d80c..22cabd4 100644
--- a/sound/soc/codecs/hdac_hda.c
+++ b/sound/soc/codecs/hdac_hda.c
@@ -546,8 +546,57 @@ static int hdac_hda_dev_remove(struct hdac_device *hdev)
 	return 0;
 }
 
+#ifdef CONFIG_PM
+static int hdac_hda_runtime_suspend(struct device *dev)
+{
+	struct hdac_device *hdac = dev_to_hdac_dev(dev);
+	struct hdac_bus *bus = hdac->bus;
+	struct hdac_ext_link *hlink = NULL;
+
+	dev_dbg(dev, "%s: entry\n", __func__);
+
+	dev_dbg(dev, "calling legacy codec suspend\n");
+	hda_codec_runtime_suspend(dev);
+	dev_dbg(dev, "legacy codec suspended\n");
+
+	hlink = snd_hdac_ext_bus_get_link(bus, dev_name(dev));
+	if (!hlink) {
+		dev_err(dev, "hdac link not found\n");
+		return -EIO;
+	}
+	snd_hdac_ext_bus_link_put(bus, hlink);
+	return 0;
+}
+
+static int hdac_hda_runtime_resume(struct device *dev)
+{
+	struct hdac_device *hdac = dev_to_hdac_dev(dev);
+	struct hdac_bus *bus = hdac->bus;
+	struct hdac_ext_link *hlink = NULL;
+
+	dev_dbg(dev, "%s: entry\n", __func__);
+
+	/* controller may not have been initialized for the first time */
+	if (!bus)
+		return 0;
+
+	hlink = snd_hdac_ext_bus_get_link(bus, dev_name(dev));
+	if (!hlink) {
+		dev_err(dev, "hdac link not found\n");
+		return -EIO;
+	}
+	snd_hdac_ext_bus_link_get(bus, hlink);
+
+	dev_dbg(dev, "calling legacy codec resume\n");
+	hda_codec_runtime_resume(dev);
+	dev_dbg(dev, "%s: exit\n", __func__);
+
+	return 0;
+}
+#else
 #define hdac_hda_runtime_suspend NULL
 #define hdac_hda_runtime_resume NULL
+#endif
 
 static const struct dev_pm_ops hdac_hda_pm = {
 	SET_RUNTIME_PM_OPS(hdac_hda_runtime_suspend,
-- 
2.7.4

  parent reply	other threads:[~2017-12-15 11:26 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-15 11:30 [RFC v3 00/11] Enable HDA Codec support on Intel Platforms (Series2) Rakesh Ughreja
2017-12-15 11:30 ` [RFC v3 01/11] ASoC: Intel: Boards: Machine driver for Intel platforms Rakesh Ughreja
2017-12-15 11:30 ` [RFC v3 02/11] ASoC: Intel: Skylake: Add entry in sst_acpi_mach for HDA codecs Rakesh Ughreja
2017-12-15 11:30 ` [RFC v3 03/11] ASoC: Intel: Skylake: add HDA BE DAIs Rakesh Ughreja
2017-12-15 11:30 ` [RFC v3 04/11] ASoC: Intel: Skylake: use hda_bus instead of hdac_bus Rakesh Ughreja
2017-12-15 11:30 ` [RFC v3 05/11] ALSA: hda - make some of the functions externally visible Rakesh Ughreja
2017-12-15 11:34   ` Takashi Iwai
2017-12-15 11:30 ` [RFC v3 06/11] ASoC: hdac_hda: add ASoC based HDA codec driver Rakesh Ughreja
2017-12-15 11:38   ` Takashi Iwai
2017-12-15 12:20     ` Ughreja, Rakesh A
2017-12-15 15:47       ` Takashi Iwai
2017-12-16  7:48         ` Ughreja, Rakesh A
2017-12-16  9:13           ` Takashi Iwai
2017-12-18  4:06             ` Ughreja, Rakesh A
2017-12-19  9:19               ` Ughreja, Rakesh A
2017-12-19 11:27                 ` Takashi Iwai
2017-12-19 15:26                   ` Ughreja, Rakesh A
2017-12-19 15:40                     ` Takashi Iwai
2017-12-19 16:14                       ` Ughreja, Rakesh A
2017-12-19 16:23                         ` Takashi Iwai
2017-12-19 17:12                           ` Ughreja, Rakesh A
2017-12-19 19:17                             ` Takashi Iwai
2017-12-20 10:26                               ` Mark Brown
2017-12-20 10:52                                 ` Ughreja, Rakesh A
2017-12-21 15:36                                   ` Ughreja, Rakesh A
2017-12-21 15:48                                     ` Takashi Iwai
2017-12-21 16:39                                       ` Ughreja, Rakesh A
2017-12-21 16:44                                         ` Takashi Iwai
2017-12-22 12:51                                           ` Ughreja, Rakesh A
2017-12-15 11:30 ` [RFC v3 07/11] ALSA: hda: split API snd_hda_codec_new for using it from ASoC codec drivers Rakesh Ughreja
2017-12-15 11:30 ` [RFC v3 08/11] ASoC: hdac_hda: add DAI, widgets and related ops Rakesh Ughreja
2017-12-15 11:30 ` Rakesh Ughreja [this message]
2017-12-15 11:30 ` [RFC v3 10/11] ASoC: codec: Support for ASoC Realtek HDA codec Driver Rakesh Ughreja
2017-12-15 11:30 ` [RFC v3 11/11] ASoC: Intel: Boards: add support for HDA codecs Rakesh Ughreja

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=1513337448-31685-10-git-send-email-rakesh.a.ughreja@intel.com \
    --to=rakesh.a.ughreja@intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=liam.r.girdwood@linux.intel.com \
    --cc=patches.audio@intel.com \
    --cc=pierre-louis.bossart@linux.intel.com \
    --cc=tiwai@suse.de \
    --cc=vinod.koul@intel.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.