[v4,11/12] ASoC: Intel: mfld-pcm: add the fe & be dai ops
diff mbox

Message ID 1407145563-1303-12-git-send-email-subhransu.s.prusty@intel.com
State New, archived
Headers show

Commit Message

Subhransu S. Prusty Aug. 4, 2014, 9:46 a.m. UTC
From: Vinod Koul <vinod.koul@intel.com>

Now that the DSP topology is added, add the FE and BE dai ops for controls DSP as
well mute/unmute of FE through ASoC

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 | 39 +++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

Comments

Mark Brown Aug. 13, 2014, 8:16 p.m. UTC | #1
On Mon, Aug 04, 2014 at 03:16:02PM +0530, Subhransu S. Prusty wrote:
> From: Vinod Koul <vinod.koul@intel.com>
> 
> Now that the DSP topology is added, add the FE and BE dai ops for controls DSP as
> well mute/unmute of FE through ASoC

It really seems like patch 1 should be part of this change, it'd be much
more obvious what's going on then (though the concerns about breaking
machine drivers still stand).

Please also try to keep your changelogs comfortably below 80 columns
(this is over 80 columns).
Subhransu S. Prusty Aug. 18, 2014, 4:51 a.m. UTC | #2
On Wed, Aug 13, 2014 at 09:16:57PM +0100, Mark Brown wrote:
> On Mon, Aug 04, 2014 at 03:16:02PM +0530, Subhransu S. Prusty wrote:
> > From: Vinod Koul <vinod.koul@intel.com>
> > 
> > Now that the DSP topology is added, add the FE and BE dai ops for controls DSP as
> > well mute/unmute of FE through ASoC
> 
> It really seems like patch 1 should be part of this change, it'd be much
> more obvious what's going on then (though the concerns about breaking
> machine drivers still stand).
> 
> Please also try to keep your changelogs comfortably below 80 columns
> (this is over 80 columns).

Will squash the patches.

Patch
diff mbox

diff --git a/sound/soc/intel/sst-mfld-platform-pcm.c b/sound/soc/intel/sst-mfld-platform-pcm.c
index 60ee6ad4b626..4e5d2f379a26 100644
--- a/sound/soc/intel/sst-mfld-platform-pcm.c
+++ b/sound/soc/intel/sst-mfld-platform-pcm.c
@@ -101,6 +101,11 @@  static struct sst_dev_stream_map dpcm_strm_map[] = {
 	{MERR_DPCM_AUDIO, 0, SNDRV_PCM_STREAM_CAPTURE, PIPE_PCM1_OUT, SST_TASK_ID_MEDIA, 0},
 };
 
+static int sst_media_digital_mute(struct snd_soc_dai *dai, int mute, int stream)
+{
+
+	return sst_send_pipe_gains(dai, stream, mute);
+}
 
 /* helper functions */
 void sst_set_stream_status(struct sst_runtime_stream *stream,
@@ -418,12 +423,41 @@  static int sst_media_hw_free(struct snd_pcm_substream *substream,
 	return snd_pcm_lib_free_pages(substream);
 }
 
+static int sst_enable_ssp(struct snd_pcm_substream *substream,
+			struct snd_soc_dai *dai)
+{
+	if (!dai->active) {
+		sst_handle_vb_timer(dai, true);
+		send_ssp_cmd(dai, dai->name, 1);
+	}
+	return 0;
+}
+
+static void sst_disable_ssp(struct snd_pcm_substream *substream,
+			struct snd_soc_dai *dai)
+{
+	if (!dai->active) {
+		send_ssp_cmd(dai, dai->name, 0);
+		sst_handle_vb_timer(dai, false);
+	}
+}
+
 static struct snd_soc_dai_ops sst_media_dai_ops = {
 	.startup = sst_media_open,
 	.shutdown = sst_media_close,
 	.prepare = sst_media_prepare,
 	.hw_params = sst_media_hw_params,
 	.hw_free = sst_media_hw_free,
+	.mute_stream = sst_media_digital_mute,
+};
+
+static struct snd_soc_dai_ops sst_compr_dai_ops = {
+	.mute_stream = sst_media_digital_mute,
+};
+
+static struct snd_soc_dai_ops sst_be_dai_ops = {
+	.startup = sst_enable_ssp,
+	.shutdown = sst_disable_ssp,
 };
 
 static int sst_media_dai_probe(struct snd_soc_dai *cpu_dai)
@@ -433,6 +467,7 @@  static int sst_media_dai_probe(struct snd_soc_dai *cpu_dai)
 	snd_soc_dai_set_drvdata(cpu_dai, sst);
 	return 0;
 }
+
 static struct snd_soc_dai_driver sst_platform_dai[] = {
 {
 	.probe = sst_media_dai_probe,
@@ -456,6 +491,7 @@  static struct snd_soc_dai_driver sst_platform_dai[] = {
 {
 	.name = "compress-cpu-dai",
 	.compress_dai = 1,
+	.ops = &sst_compr_dai_ops,
 	.playback = {
 		.stream_name = "Compress Playback",
 		.channels_min = SST_STEREO,
@@ -467,6 +503,7 @@  static struct snd_soc_dai_driver sst_platform_dai[] = {
 /*BE CPU  Dais */
 {
 	.name = "ssp0-port",
+	.ops = &sst_be_dai_ops,
 	.playback = {
 		.stream_name = "ssp0 Tx",
 		.channels_min = SST_STEREO,
@@ -484,6 +521,7 @@  static struct snd_soc_dai_driver sst_platform_dai[] = {
 },
 {
 	.name = "ssp1-port",
+	.ops = &sst_be_dai_ops,
 	.playback = {
 		.stream_name = "ssp1 Tx",
 		.channels_min = SST_STEREO,
@@ -501,6 +539,7 @@  static struct snd_soc_dai_driver sst_platform_dai[] = {
 },
 {
 	.name = "ssp2-port",
+	.ops = &sst_be_dai_ops,
 	.playback = {
 		.stream_name = "ssp2 Tx",
 		.channels_min = SST_STEREO,