Message ID | 20230116125506.27989-3-peter.ujfalusi@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ASoC: SOF: sof-audio: Fixes for widget prepare and unprepare | expand |
Il 16/01/23 13:55, Peter Ujfalusi ha scritto: > From: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> > > Skip preparing/unpreparing widgets if the swidget pointer is NULL. This > will be true in the case of virtual widgets in topology that were added > for reusing the legacy HDA machine driver with SOF. > > Fixes: 9862dcf70245 ("ASoC: SOF: don't unprepare widget used other pipelines") > Cc: <stable@vger.kernel.org> # 6.1 > Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> > Reviewed-by: Rander Wang <rander.wang@intel.com> > Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> [Angelo: Tested on MT8195 Tomato Chromebook] Tested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
diff --git a/sound/soc/sof/sof-audio.c b/sound/soc/sof/sof-audio.c index 068501ed7951..739afb8df590 100644 --- a/sound/soc/sof/sof-audio.c +++ b/sound/soc/sof/sof-audio.c @@ -274,7 +274,7 @@ sof_unprepare_widgets_in_path(struct snd_sof_dev *sdev, struct snd_soc_dapm_widg struct snd_soc_dapm_path *p; /* return if the widget is in use or if it is already unprepared */ - if (!swidget->prepared || swidget->use_count > 0) + if (!swidget || !swidget->prepared || swidget->use_count > 0) return; widget_ops = tplg_ops ? tplg_ops->widget : NULL; @@ -310,7 +310,7 @@ sof_prepare_widgets_in_path(struct snd_sof_dev *sdev, struct snd_soc_dapm_widget if (!widget_ops) return 0; - if (!widget_ops[widget->id].ipc_prepare || swidget->prepared) + if (!swidget || !widget_ops[widget->id].ipc_prepare || swidget->prepared) goto sink_prepare; /* prepare the source widget */