From: Pierre-Louis Bossart <pierre-louis.boss...@linux.intel.com>

This is needed to retrieve the information when the stream is
allocated at the dai_link level.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.boss...@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.l...@linux.intel.com>
---
 drivers/soundwire/intel.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c
index 13d3877bc6bb..861beb785171 100644
--- a/drivers/soundwire/intel.c
+++ b/drivers/soundwire/intel.c
@@ -1062,6 +1062,22 @@ static int intel_pdm_set_sdw_stream(struct snd_soc_dai 
*dai,
        return cdns_set_sdw_stream(dai, stream, false, direction);
 }
 
+static void *intel_get_sdw_stream(struct snd_soc_dai *dai,
+                                 int direction)
+{
+       struct sdw_cdns_dma_data *dma;
+
+       if (direction == SNDRV_PCM_STREAM_PLAYBACK)
+               dma = dai->playback_dma_data;
+       else
+               dma = dai->capture_dma_data;
+
+       if (!dma)
+               return NULL;
+
+       return dma->stream;
+}
+
 static const struct snd_soc_dai_ops intel_pcm_dai_ops = {
        .startup = intel_startup,
        .hw_params = intel_hw_params,
@@ -1070,6 +1086,7 @@ static const struct snd_soc_dai_ops intel_pcm_dai_ops = {
        .hw_free = intel_hw_free,
        .shutdown = intel_shutdown,
        .set_sdw_stream = intel_pcm_set_sdw_stream,
+       .get_sdw_stream = intel_get_sdw_stream,
 };
 
 static const struct snd_soc_dai_ops intel_pdm_dai_ops = {
@@ -1080,6 +1097,7 @@ static const struct snd_soc_dai_ops intel_pdm_dai_ops = {
        .hw_free = intel_hw_free,
        .shutdown = intel_shutdown,
        .set_sdw_stream = intel_pdm_set_sdw_stream,
+       .get_sdw_stream = intel_get_sdw_stream,
 };
 
 static const struct snd_soc_component_driver dai_component = {
-- 
2.17.1

Reply via email to