diff options
author | Mark Brown <broonie@kernel.org> | 2024-06-21 14:17:21 +0200 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2024-06-21 14:17:21 +0200 |
commit | de7a09dec4b90a7f92b1ebcdfeed69400b5079f4 (patch) | |
tree | 733d2f51b62d8d8213739d54d87fb1b4f2415b94 /sound/soc/sof | |
parent | ASoC: dt-bindings: add missing vender prefix on filename (diff) | |
parent | ASoC: fsl-asoc-card: set priv->pdev before using it (diff) | |
download | linux-de7a09dec4b90a7f92b1ebcdfeed69400b5079f4.tar.xz linux-de7a09dec4b90a7f92b1ebcdfeed69400b5079f4.zip |
ASoC: Merge up fixes
We need some of the AMD fixes as a base for new work.
Diffstat (limited to 'sound/soc/sof')
-rw-r--r-- | sound/soc/sof/intel/hda-dai.c | 6 | ||||
-rw-r--r-- | sound/soc/sof/sof-audio.c | 2 |
2 files changed, 5 insertions, 3 deletions
diff --git a/sound/soc/sof/intel/hda-dai.c b/sound/soc/sof/intel/hda-dai.c index ce675c22a5ab..c61d298ea6b3 100644 --- a/sound/soc/sof/intel/hda-dai.c +++ b/sound/soc/sof/intel/hda-dai.c @@ -379,7 +379,7 @@ static int non_hda_dai_hw_params_data(struct snd_pcm_substream *substream, sdev = widget_to_sdev(w); if (sdev->dspless_mode_selected) - goto skip_tlv; + return 0; /* get stream_id */ hext_stream = ops->get_hext_stream(sdev, cpu_dai, substream); @@ -423,7 +423,6 @@ static int non_hda_dai_hw_params_data(struct snd_pcm_substream *substream, dma_config->dma_stream_channel_map.device_count = 1; dma_config->dma_priv_config_size = 0; -skip_tlv: return 0; } @@ -525,6 +524,9 @@ int sdw_hda_dai_hw_params(struct snd_pcm_substream *substream, return ret; } + if (sdev->dspless_mode_selected) + return 0; + ipc4_copier = widget_to_copier(w); dma_config_tlv = &ipc4_copier->dma_config_tlv[cpu_dai_id]; dma_config = &dma_config_tlv->dma_config; diff --git a/sound/soc/sof/sof-audio.c b/sound/soc/sof/sof-audio.c index 881eec38c2e2..9a52781bf8d8 100644 --- a/sound/soc/sof/sof-audio.c +++ b/sound/soc/sof/sof-audio.c @@ -485,7 +485,7 @@ sink_prepare: if (ret < 0) { /* unprepare the source widget */ if (widget_ops[widget->id].ipc_unprepare && - swidget && swidget->prepared) { + swidget && swidget->prepared && swidget->use_count == 0) { widget_ops[widget->id].ipc_unprepare(swidget); swidget->prepared = false; } |