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: [PATCH v7 2/7] ASoC: Intel: mfld-pcm: add control for powering up/down dsp
Date: Fri, 19 Sep 2014 16:46:03 +0530	[thread overview]
Message-ID: <1411125368-5836-3-git-send-email-subhransu.s.prusty@intel.com> (raw)
In-Reply-To: <1411125368-5836-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

Also fix some preexisting spacing error.

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 | 16 ++++++++++++++++
 sound/soc/intel/sst-mfld-platform.h     | 17 +++++++++--------
 2 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/sound/soc/intel/sst-mfld-platform-pcm.c b/sound/soc/intel/sst-mfld-platform-pcm.c
index 9906b7c..6f5edd6 100644
--- a/sound/soc/intel/sst-mfld-platform-pcm.c
+++ b/sound/soc/intel/sst-mfld-platform-pcm.c
@@ -322,6 +322,16 @@ static int sst_platform_init_stream(struct snd_pcm_substream *substream)
 
 }
 
+static int power_up_sst(struct sst_runtime_stream *stream)
+{
+	return stream->ops->power(sst->dev, true);
+}
+
+static void power_down_sst(struct sst_runtime_stream *stream)
+{
+	stream->ops->power(sst->dev, false);
+}
+
 static int sst_media_open(struct snd_pcm_substream *substream,
 		struct snd_soc_dai *dai)
 {
@@ -351,6 +361,10 @@ static int sst_media_open(struct snd_pcm_substream *substream,
 	/* allocate memory for SST API set */
 	runtime->private_data = stream;
 
+	ret_val = power_up_sst(stream);
+	if (ret_val < 0)
+		return ret_val;
+
 	/* Make sure, that the period size is always even */
 	snd_pcm_hw_constraint_step(substream->runtime, 0,
 			   SNDRV_PCM_HW_PARAM_PERIODS, 2);
@@ -370,6 +384,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(sst->dev, str_id);
diff --git a/sound/soc/intel/sst-mfld-platform.h b/sound/soc/intel/sst-mfld-platform.h
index 7092ee3..19f83ec 100644
--- a/sound/soc/intel/sst-mfld-platform.h
+++ b/sound/soc/intel/sst-mfld-platform.h
@@ -120,15 +120,16 @@ struct compress_sst_ops {
 };
 
 struct sst_ops {
-	int (*open) (struct device *dev, struct snd_sst_params *str_param);
-	int (*stream_init) (struct device *dev, struct pcm_stream_info *str_info);
-	int (*stream_start) (struct device *dev, int str_id);
-	int (*stream_drop) (struct device *dev, int str_id);
-	int (*stream_pause) (struct device *dev, int str_id);
-	int (*stream_pause_release) (struct device *dev, int str_id);
-	int (*stream_read_tstamp) (struct device *dev, struct pcm_stream_info *str_info);
+	int (*open)(struct device *dev, struct snd_sst_params *str_param);
+	int (*stream_init)(struct device *dev, struct pcm_stream_info *str_info);
+	int (*stream_start)(struct device *dev, int str_id);
+	int (*stream_drop)(struct device *dev, int str_id);
+	int (*stream_pause)(struct device *dev, int str_id);
+	int (*stream_pause_release)(struct device *dev, int str_id);
+	int (*stream_read_tstamp)(struct device *dev, struct pcm_stream_info *str_info);
 	int (*send_byte_stream)(struct device *dev, struct snd_sst_bytes_v2 *bytes);
-	int (*close) (struct device *dev, unsigned int str_id);
+	int (*close)(struct device *dev, unsigned int str_id);
+	int (*power)(struct device *dev, bool state);
 };
 
 struct sst_runtime_stream {
-- 
1.9.0

  parent reply	other threads:[~2014-09-19 11:39 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-19 11:16 [PATCH v7 0/7] Add mrfld DSP topology and widgets Subhransu S. Prusty
2014-09-19 11:16 ` [PATCH v7 1/7] ASoC: Intel: mrfld: add the gain controls Subhransu S. Prusty
2014-09-25 14:20   ` Mark Brown
2014-09-25 14:06     ` Vinod Koul
2014-09-19 11:16 ` Subhransu S. Prusty [this message]
2014-09-25 14:22   ` [PATCH v7 2/7] ASoC: Intel: mfld-pcm: add control for powering up/down dsp Mark Brown
2014-09-19 11:16 ` [PATCH v7 3/7] ASoC: Intel: mrfld: add DSP core controls Subhransu S. Prusty
2014-09-25 15:08   ` Mark Brown
2014-09-25 16:08     ` Vinod Koul
2014-09-27 11:13       ` Mark Brown
2014-09-29  6:00         ` Vinod Koul
2014-09-19 11:16 ` [PATCH v7 4/7] ASoC: Export dapm_kcontrol_get_value Subhransu S. Prusty
2014-10-02 18:13   ` Mark Brown
2014-09-19 11:16 ` [PATCH v7 5/7] ASoC: Intel: mrfld: add the DSP DAPM widgets Subhransu S. Prusty
2014-10-02 18:12   ` Mark Brown
2014-10-06  2:40     ` Vinod Koul
2014-10-06  2:44       ` Vinod Koul
2014-10-06 10:50         ` Mark Brown
2014-09-19 11:16 ` [PATCH v7 6/7] ASoC: Intel: mfld-pcm: add FE and BE ops Subhransu S. Prusty
2014-09-19 11:16 ` [PATCH v7 7/7] 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=1411125368-5836-3-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.