Lines Matching refs:swidget
45 struct snd_sof_widget *swidget) in sof_widget_free_unlocked() argument
48 struct snd_sof_pipeline *spipe = swidget->spipe; in sof_widget_free_unlocked()
52 if (!swidget->private) in sof_widget_free_unlocked()
55 trace_sof_widget_free(swidget); in sof_widget_free_unlocked()
58 if (--swidget->use_count) in sof_widget_free_unlocked()
62 sof_reset_route_setup_status(sdev, swidget); in sof_widget_free_unlocked()
65 if (WIDGET_IS_DAI(swidget->id)) { in sof_widget_free_unlocked()
72 err = tplg_ops->dai_config(sdev, swidget, flags, &data); in sof_widget_free_unlocked()
75 swidget->widget->name); in sof_widget_free_unlocked()
81 ret = tplg_ops->widget_free(sdev, swidget); in sof_widget_free_unlocked()
90 if (swidget->id == snd_soc_dapm_scheduler) { in sof_widget_free_unlocked()
97 i, swidget->widget->name); in sof_widget_free_unlocked()
102 swidget->spipe->complete = 0; in sof_widget_free_unlocked()
109 if (swidget->spipe && swidget->dynamic_pipeline_widget && in sof_widget_free_unlocked()
110 swidget->id != snd_soc_dapm_scheduler) { in sof_widget_free_unlocked()
111 ret = sof_widget_free_unlocked(sdev, swidget->spipe->pipe_widget); in sof_widget_free_unlocked()
117 dev_dbg(sdev->dev, "widget %s freed\n", swidget->widget->name); in sof_widget_free_unlocked()
122 int sof_widget_free(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget) in sof_widget_free() argument
126 mutex_lock(&swidget->setup_mutex); in sof_widget_free()
127 ret = sof_widget_free_unlocked(sdev, swidget); in sof_widget_free()
128 mutex_unlock(&swidget->setup_mutex); in sof_widget_free()
135 struct snd_sof_widget *swidget) in sof_widget_setup_unlocked() argument
138 struct snd_sof_pipeline *spipe = swidget->spipe; in sof_widget_setup_unlocked()
144 if (!swidget->private) in sof_widget_setup_unlocked()
147 trace_sof_widget_setup(swidget); in sof_widget_setup_unlocked()
150 if (++swidget->use_count > 1) in sof_widget_setup_unlocked()
160 if (swidget->dynamic_pipeline_widget && swidget->id != snd_soc_dapm_scheduler) { in sof_widget_setup_unlocked()
161 if (!swidget->spipe || !swidget->spipe->pipe_widget) { in sof_widget_setup_unlocked()
162 dev_err(sdev->dev, "No pipeline set for %s\n", swidget->widget->name); in sof_widget_setup_unlocked()
167 ret = sof_widget_setup_unlocked(sdev, swidget->spipe->pipe_widget); in sof_widget_setup_unlocked()
173 if (swidget->id == snd_soc_dapm_scheduler) { in sof_widget_setup_unlocked()
178 i, swidget->widget->name); in sof_widget_setup_unlocked()
186 ret = tplg_ops->widget_setup(sdev, swidget); in sof_widget_setup_unlocked()
192 if (WIDGET_IS_DAI(swidget->id)) { in sof_widget_setup_unlocked()
200 ret = tplg_ops->dai_config(sdev, swidget, flags, NULL); in sof_widget_setup_unlocked()
208 ret = tplg_ops->control->widget_kcontrol_setup(sdev, swidget); in sof_widget_setup_unlocked()
213 dev_dbg(sdev->dev, "widget %s setup complete\n", swidget->widget->name); in sof_widget_setup_unlocked()
219 sof_widget_free_unlocked(sdev, swidget); in sof_widget_setup_unlocked()
222 if (swidget->id != snd_soc_dapm_scheduler) { in sof_widget_setup_unlocked()
223 sof_widget_free_unlocked(sdev, swidget->spipe->pipe_widget); in sof_widget_setup_unlocked()
236 swidget->use_count--; in sof_widget_setup_unlocked()
241 int sof_widget_setup(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget) in sof_widget_setup() argument
245 mutex_lock(&swidget->setup_mutex); in sof_widget_setup()
246 ret = sof_widget_setup_unlocked(sdev, swidget); in sof_widget_setup()
247 mutex_unlock(&swidget->setup_mutex); in sof_widget_setup()
353 struct snd_sof_widget *swidget; in sof_setup_pipeline_connections() local
376 swidget = sroute->sink_widget; in sof_setup_pipeline_connections()
378 swidget = sroute->src_widget; in sof_setup_pipeline_connections()
380 mutex_lock(&swidget->setup_mutex); in sof_setup_pipeline_connections()
381 if (!swidget->use_count) { in sof_setup_pipeline_connections()
382 mutex_unlock(&swidget->setup_mutex); in sof_setup_pipeline_connections()
396 mutex_unlock(&swidget->setup_mutex); in sof_setup_pipeline_connections()
410 struct snd_sof_widget *swidget = widget->dobj.private; in sof_unprepare_widgets_in_path() local
418 if (!swidget || !swidget->prepared || swidget->use_count > 0) in sof_unprepare_widgets_in_path()
424 widget_ops[widget->id].ipc_unprepare(swidget); in sof_unprepare_widgets_in_path()
426 swidget->prepared = false; in sof_unprepare_widgets_in_path()
449 struct snd_sof_widget *swidget = widget->dobj.private; in sof_prepare_widgets_in_path() local
461 if (!swidget || !widget_ops[widget->id].ipc_prepare || swidget->prepared) in sof_prepare_widgets_in_path()
465 ret = widget_ops[widget->id].ipc_prepare(swidget, fe_params, platform_params, in sof_prepare_widgets_in_path()
472 swidget->prepared = true; in sof_prepare_widgets_in_path()
488 swidget && swidget->prepared && swidget->use_count == 0) { in sof_prepare_widgets_in_path()
489 widget_ops[widget->id].ipc_unprepare(swidget); in sof_prepare_widgets_in_path()
490 swidget->prepared = false; in sof_prepare_widgets_in_path()
549 struct snd_sof_widget *swidget = widget->dobj.private; in sof_set_up_widgets_in_path() local
557 if (swidget) { in sof_set_up_widgets_in_path()
575 if (spipe == swidget->spipe) in sof_set_up_widgets_in_path()
581 pipeline_list->pipelines[i] = swidget->spipe; in sof_set_up_widgets_in_path()
596 if (swidget) in sof_set_up_widgets_in_path()
597 sof_widget_free(sdev, swidget); in sof_set_up_widgets_in_path()
717 struct snd_sof_widget *swidget = widget->dobj.private; in sof_widget_list_setup() local
721 if (!swidget || sdev->dspless_mode_selected) in sof_widget_list_setup()
724 spipe = swidget->spipe; in sof_widget_list_setup()
727 swidget->widget->name); in sof_widget_list_setup()
735 swidget->widget->name); in sof_widget_list_setup()
934 struct snd_sof_widget *swidget; in snd_sof_find_swidget() local
936 list_for_each_entry(swidget, &sdev->widget_list, list) { in snd_sof_find_swidget()
937 if (strcmp(name, swidget->widget->name) == 0) in snd_sof_find_swidget()
938 return swidget; in snd_sof_find_swidget()
950 struct snd_sof_widget *swidget; in snd_sof_find_swidget_sname() local
958 list_for_each_entry(swidget, &sdev->widget_list, list) { in snd_sof_find_swidget_sname()
959 if (!strcmp(pcm_name, swidget->widget->sname) && in snd_sof_find_swidget_sname()
960 swidget->id == type) in snd_sof_find_swidget_sname()
961 return swidget; in snd_sof_find_swidget_sname()