ASoC: SOF: sof-audio: test virtual widget in sof_walk_widgets_in_order
Virtual widgets are added for the purpose of showing connections between aggregated DAIs in SDW topologies. However, we shouldn't touch them in SOF. Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20230616100039.378150-3-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Родитель
90ce753865
Коммит
0557864e9d
|
@ -396,6 +396,9 @@ sof_unprepare_widgets_in_path(struct snd_sof_dev *sdev, struct snd_soc_dapm_widg
|
|||
const struct sof_ipc_tplg_widget_ops *widget_ops;
|
||||
struct snd_soc_dapm_path *p;
|
||||
|
||||
if (is_virtual_widget(sdev, widget, __func__))
|
||||
return;
|
||||
|
||||
/* skip if the widget is in use or if it is already unprepared */
|
||||
if (!swidget || !swidget->prepared || swidget->use_count > 0)
|
||||
goto sink_unprepare;
|
||||
|
@ -433,6 +436,9 @@ sof_prepare_widgets_in_path(struct snd_sof_dev *sdev, struct snd_soc_dapm_widget
|
|||
struct snd_soc_dapm_path *p;
|
||||
int ret;
|
||||
|
||||
if (is_virtual_widget(sdev, widget, __func__))
|
||||
return 0;
|
||||
|
||||
widget_ops = tplg_ops ? tplg_ops->widget : NULL;
|
||||
if (!widget_ops)
|
||||
return 0;
|
||||
|
@ -488,6 +494,9 @@ static int sof_free_widgets_in_path(struct snd_sof_dev *sdev, struct snd_soc_dap
|
|||
int err;
|
||||
int ret = 0;
|
||||
|
||||
if (is_virtual_widget(sdev, widget, __func__))
|
||||
return 0;
|
||||
|
||||
if (widget->dobj.private) {
|
||||
err = sof_widget_free(sdev, widget->dobj.private);
|
||||
if (err < 0)
|
||||
|
@ -527,6 +536,9 @@ static int sof_set_up_widgets_in_path(struct snd_sof_dev *sdev, struct snd_soc_d
|
|||
struct snd_soc_dapm_path *p;
|
||||
int ret;
|
||||
|
||||
if (is_virtual_widget(sdev, widget, __func__))
|
||||
return 0;
|
||||
|
||||
if (swidget) {
|
||||
int i;
|
||||
|
||||
|
@ -592,6 +604,9 @@ sof_walk_widgets_in_order(struct snd_sof_dev *sdev, struct snd_sof_pcm *spcm,
|
|||
return 0;
|
||||
|
||||
for_each_dapm_widgets(list, i, widget) {
|
||||
if (is_virtual_widget(sdev, widget, __func__))
|
||||
continue;
|
||||
|
||||
/* starting widget for playback is AIF type */
|
||||
if (dir == SNDRV_PCM_STREAM_PLAYBACK && widget->id != snd_soc_dapm_aif_in)
|
||||
continue;
|
||||
|
|
Загрузка…
Ссылка в новой задаче