ASoC: SOF: Intel: hda-dai: add support for dspless mode beyond HDAudio
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Tue, 13 Feb 2024 10:12:47 +0000 (12:12 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 13 Feb 2024 13:29:04 +0000 (13:29 +0000)
For SoundWire/ALH, we need to have a dai configured, but we don't want
to send a DMA_TLV to firmware. Add additional code branches.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://msgid.link/r/20240213101247.28887-16-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/intel/hda-dai.c

index 4bffd9ea21a9efaebbf3c9c393985a05906b0bad..c1682bcdb5a6636091d92319162a206cfe08723c 100644 (file)
@@ -83,6 +83,11 @@ hda_dai_get_ops(struct snd_pcm_substream *substream, struct snd_soc_dai *cpu_dai
 
        sdev = widget_to_sdev(w);
 
+       if (!swidget) {
+               dev_err(sdev->dev, "%s: swidget is NULL\n", __func__);
+               return NULL;
+       }
+
        if (sdev->dspless_mode_selected)
                return hda_select_dai_widget_ops(sdev, swidget);
 
@@ -364,8 +369,11 @@ static int non_hda_dai_hw_params(struct snd_pcm_substream *substream,
                return ret;
        }
 
-       /* get stream_id */
        sdev = widget_to_sdev(w);
+       if (sdev->dspless_mode_selected)
+               goto skip_tlv;
+
+       /* get stream_id */
        hext_stream = ops->get_hext_stream(sdev, cpu_dai, substream);
 
        if (!hext_stream) {
@@ -398,6 +406,7 @@ static int non_hda_dai_hw_params(struct snd_pcm_substream *substream,
        dma_config->dma_stream_channel_map.device_count = 0; /* mapping not used */
        dma_config->dma_priv_config_size = 0;
 
+skip_tlv:
        return 0;
 }