All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Subhransu S. Prusty" <subhransu.s.prusty@intel.com>
To: alsa-devel@alsa-project.org
Cc: vinod.koul@intel.com, broonie@kernel.org,
	"Subhransu S. Prusty" <subhransu.s.prusty@intel.com>,
	lgirdwood@gmail.com, Lars-Peter Clausen <lars@metafoo.de>
Subject: [v3 08/13] ASoC: Intel: mfld-pcm: add control for powering up/down dsp
Date: Wed, 30 Jul 2014 18:32:25 +0530	[thread overview]
Message-ID: <1406725350-23275-9-git-send-email-subhransu.s.prusty@intel.com> (raw)
In-Reply-To: <1406725350-23275-1-git-send-email-subhransu.s.prusty@intel.com>

From: Vinod Koul <vinod.koul@intel.com>

When we have PCM (FE/BE) opened or DAPM widgets triggered we need power up/down
DSP accordingly. The DSP will do ref count of these requests i.e. link these
runtime_get/put calls of DSP

Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty@intel.com>
---
 sound/soc/intel/sst-mfld-platform-pcm.c | 14 ++++++++++++++
 sound/soc/intel/sst-mfld-platform.h     |  1 +
 2 files changed, 15 insertions(+)

diff --git a/sound/soc/intel/sst-mfld-platform-pcm.c b/sound/soc/intel/sst-mfld-platform-pcm.c
index eed4d2f080f6..2fb079c6a931 100644
--- a/sound/soc/intel/sst-mfld-platform-pcm.c
+++ b/sound/soc/intel/sst-mfld-platform-pcm.c
@@ -292,6 +292,16 @@ static int sst_platform_init_stream(struct snd_pcm_substream *substream)
 	return ret_val;
 
 }
+
+static inline int power_up_sst(struct sst_runtime_stream *sst)
+{
+	return sst->ops->power(true);
+}
+
+static inline int power_down_sst(struct sst_runtime_stream *sst)
+{
+	return sst->ops->power(false);
+}
 /* end -- helper functions */
 
 static int sst_media_open(struct snd_pcm_substream *substream,
@@ -323,6 +333,8 @@ static int sst_media_open(struct snd_pcm_substream *substream,
 	/* allocate memory for SST API set */
 	runtime->private_data = stream;
 
+	power_up_sst(stream);
+
 	/* Make sure, that the period size is always even */
 	snd_pcm_hw_constraint_step(substream->runtime, 0,
 			   SNDRV_PCM_HW_PARAM_PERIODS, 2);
@@ -342,6 +354,8 @@ static void sst_media_close(struct snd_pcm_substream *substream,
 	int ret_val = 0, str_id;
 
 	stream = substream->runtime->private_data;
+	power_down_sst(stream);
+
 	str_id = stream->stream_info.str_id;
 	if (str_id)
 		ret_val = stream->ops->close(str_id);
diff --git a/sound/soc/intel/sst-mfld-platform.h b/sound/soc/intel/sst-mfld-platform.h
index 7526ac1b5cd7..6f476d586b66 100644
--- a/sound/soc/intel/sst-mfld-platform.h
+++ b/sound/soc/intel/sst-mfld-platform.h
@@ -133,6 +133,7 @@ struct sst_ops {
 	int (*device_control) (int cmd, void *arg);
 	int (*send_byte_stream)(void *arg);
 	int (*close) (unsigned int str_id);
+	int (*power)(bool state);
 };
 
 struct sst_runtime_stream {
-- 
1.9.0

  parent reply	other threads:[~2014-07-30 13:24 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-30 13:02 [v3 00/13] Add mrfld DSP topology and widgets Subhransu S. Prusty
2014-07-30 13:02 ` [v3 01/13] ASoC: Intel: mfld-pcm: add FE and BE ops Subhransu S. Prusty
2014-07-30 13:02 ` [v3 02/13] ASoC: Intel: mrfld: set private data for cpu-dai Subhransu S. Prusty
2014-07-30 13:02 ` [v3 03/13] ASoC: intel: mfld-pcm: don't call trigger ops to DSP for internal streams Subhransu S. Prusty
2014-07-30 13:02 ` [v3 04/13] ASoC: Intel: Fix to use byte control interface Subhransu S. Prusty
2014-07-30 13:02 ` [v3 05/13] ASoC: Intel: add mrfld DSP defines Subhransu S. Prusty
2014-07-30 13:39   ` Takashi Iwai
2014-07-30 13:02 ` [v3 06/13] ASoC: Intel: mrfld: add bytes control for modules Subhransu S. Prusty
2014-07-30 13:50   ` Takashi Iwai
2014-07-31  9:54     ` [alsa-devel] " Subhransu S. Prusty
2014-07-31  9:54     ` Subhransu S. Prusty
2014-07-30 13:02 ` [v3 07/13] ASoC: Intel: mrfld: add the gain controls Subhransu S. Prusty
2014-07-30 13:02 ` Subhransu S. Prusty [this message]
2014-07-30 13:02 ` [v3 09/13] ASoC: Intel: mrfld: add DSP core controls Subhransu S. Prusty
2014-07-30 13:02 ` [v3 10/13] ASoC: Export dapm_kcontrol_get_value Subhransu S. Prusty
2014-07-30 13:02 ` [v3 11/13] ASoC: Intel: mrfld: add the DSP DAPM widgets Subhransu S. Prusty
2014-07-30 13:02 ` [v3 12/13] ASoC: Intel: mfld-pcm: add the fe & be dai ops Subhransu S. Prusty
2014-07-30 13:02 ` [v3 13/13] ASoC: Intel: mrfld: add the DSP mixers Subhransu S. Prusty

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=1406725350-23275-9-git-send-email-subhransu.s.prusty@intel.com \
    --to=subhransu.s.prusty@intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=lars@metafoo.de \
    --cc=lgirdwood@gmail.com \
    --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.