diff options
| author | Rander Wang <[email protected]> | 2022-09-20 17:01:07 +0200 |
|---|---|---|
| committer | Mark Brown <[email protected]> | 2022-09-20 19:07:34 +0100 |
| commit | 9862dcf70245c2d03764012b81966d8c2ea95a48 (patch) | |
| tree | 813b26170f7be18e0190df6ed584695f54a5f4cc | |
| parent | ce59804d26432d7e2c1a8c906245a230a2b4505c (diff) | |
ASoC: SOF: don't unprepare widget used other pipelines
If multiple pipeline are mixed into one, we can't unprepare
the widget used by other pipelines. This patch checks use_count
to address this case.
Reviewed-by: Bard Liao <[email protected]>
Reviewed-by: Ranjani Sridharan <[email protected]>
Signed-off-by: Rander Wang <[email protected]>
Signed-off-by: Pierre-Louis Bossart <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Mark Brown <[email protected]>
| -rw-r--r-- | sound/soc/sof/sof-audio.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sound/soc/sof/sof-audio.c b/sound/soc/sof/sof-audio.c index 71cea83889fb..62092e2d609c 100644 --- a/sound/soc/sof/sof-audio.c +++ b/sound/soc/sof/sof-audio.c @@ -271,8 +271,8 @@ sof_unprepare_widgets_in_path(struct snd_sof_dev *sdev, struct snd_soc_dapm_widg struct snd_sof_widget *swidget = widget->dobj.private; struct snd_soc_dapm_path *p; - /* it is already unprepared */ - if (!swidget->prepared) + /* return if the widget is in use or if it is already unprepared */ + if (!swidget->prepared || swidget->use_count > 1) return; if (widget_ops[widget->id].ipc_unprepare) |