Now that the DSP toplogy is added, add the FE and BE dai ops for controls DSP as well mute/unmute of FE thru ASoC
Signed-off-by: Vinod Koul vinod.koul@intel.com --- sound/soc/intel/sst-mfld-platform-pcm.c | 38 +++++++++++++++++++++++++++++++ 1 files changed, 38 insertions(+), 0 deletions(-)
diff --git a/sound/soc/intel/sst-mfld-platform-pcm.c b/sound/soc/intel/sst-mfld-platform-pcm.c index 346f972..007bfcd 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, @@ -421,12 +426,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->platform, true); + send_ssp_cmd(dai->platform, 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->platform, dai->name, 0); + sst_handle_vb_timer(dai->platform, 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 struct snd_soc_dai_driver sst_platform_dai[] = { @@ -451,6 +485,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, @@ -462,6 +497,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, @@ -479,6 +515,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, @@ -496,6 +533,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,