Lines Matching refs:swidget
46 struct snd_sof_widget *swidget) in sof_widget_free_unlocked() argument
53 if (!swidget->private) in sof_widget_free_unlocked()
56 trace_sof_widget_free(swidget); in sof_widget_free_unlocked()
59 if (--swidget->use_count) in sof_widget_free_unlocked()
62 pipe_widget = swidget->spipe->pipe_widget; in sof_widget_free_unlocked()
65 sof_reset_route_setup_status(sdev, swidget); in sof_widget_free_unlocked()
68 if (WIDGET_IS_DAI(swidget->id)) { in sof_widget_free_unlocked()
75 err = tplg_ops->dai_config(sdev, swidget, flags, &data); in sof_widget_free_unlocked()
78 swidget->widget->name); in sof_widget_free_unlocked()
84 ret = tplg_ops->widget_free(sdev, swidget); in sof_widget_free_unlocked()
93 ret = snd_sof_dsp_core_put(sdev, swidget->core); in sof_widget_free_unlocked()
96 swidget->core, swidget->widget->name); in sof_widget_free_unlocked()
105 if (swidget->dynamic_pipeline_widget && swidget->id != snd_soc_dapm_scheduler) { in sof_widget_free_unlocked()
112 if (swidget->id == snd_soc_dapm_scheduler) in sof_widget_free_unlocked()
113 swidget->spipe->complete = 0; in sof_widget_free_unlocked()
116 dev_dbg(sdev->dev, "widget %s freed\n", swidget->widget->name); in sof_widget_free_unlocked()
121 int sof_widget_free(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget) in sof_widget_free() argument
125 mutex_lock(&swidget->setup_mutex); in sof_widget_free()
126 ret = sof_widget_free_unlocked(sdev, swidget); in sof_widget_free()
127 mutex_unlock(&swidget->setup_mutex); in sof_widget_free()
134 struct snd_sof_widget *swidget) in sof_widget_setup_unlocked() argument
141 if (!swidget->private) in sof_widget_setup_unlocked()
144 trace_sof_widget_setup(swidget); in sof_widget_setup_unlocked()
147 if (++swidget->use_count > 1) in sof_widget_setup_unlocked()
157 if (swidget->dynamic_pipeline_widget && swidget->id != snd_soc_dapm_scheduler) { in sof_widget_setup_unlocked()
158 if (!swidget->spipe || !swidget->spipe->pipe_widget) { in sof_widget_setup_unlocked()
159 dev_err(sdev->dev, "No pipeline set for %s\n", swidget->widget->name); in sof_widget_setup_unlocked()
164 ret = sof_widget_setup_unlocked(sdev, swidget->spipe->pipe_widget); in sof_widget_setup_unlocked()
170 ret = snd_sof_dsp_core_get(sdev, swidget->core); in sof_widget_setup_unlocked()
173 swidget->widget->name); in sof_widget_setup_unlocked()
179 ret = tplg_ops->widget_setup(sdev, swidget); in sof_widget_setup_unlocked()
185 if (WIDGET_IS_DAI(swidget->id)) { in sof_widget_setup_unlocked()
193 ret = tplg_ops->dai_config(sdev, swidget, flags, NULL); in sof_widget_setup_unlocked()
201 ret = tplg_ops->control->widget_kcontrol_setup(sdev, swidget); in sof_widget_setup_unlocked()
206 dev_dbg(sdev->dev, "widget %s setup complete\n", swidget->widget->name); in sof_widget_setup_unlocked()
212 sof_widget_free_unlocked(sdev, swidget); in sof_widget_setup_unlocked()
216 snd_sof_dsp_core_put(sdev, swidget->core); in sof_widget_setup_unlocked()
218 if (swidget->id != snd_soc_dapm_scheduler) in sof_widget_setup_unlocked()
219 sof_widget_free_unlocked(sdev, swidget->spipe->pipe_widget); in sof_widget_setup_unlocked()
222 swidget->use_count--; in sof_widget_setup_unlocked()
227 int sof_widget_setup(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget) in sof_widget_setup() argument
231 mutex_lock(&swidget->setup_mutex); in sof_widget_setup()
232 ret = sof_widget_setup_unlocked(sdev, swidget); in sof_widget_setup()
233 mutex_unlock(&swidget->setup_mutex); in sof_widget_setup()
339 struct snd_sof_widget *swidget; in sof_setup_pipeline_connections() local
362 swidget = sroute->sink_widget; in sof_setup_pipeline_connections()
364 swidget = sroute->src_widget; in sof_setup_pipeline_connections()
366 mutex_lock(&swidget->setup_mutex); in sof_setup_pipeline_connections()
367 if (!swidget->use_count) { in sof_setup_pipeline_connections()
368 mutex_unlock(&swidget->setup_mutex); in sof_setup_pipeline_connections()
382 mutex_unlock(&swidget->setup_mutex); in sof_setup_pipeline_connections()
396 struct snd_sof_widget *swidget = widget->dobj.private; in sof_unprepare_widgets_in_path() local
404 if (!swidget || !swidget->prepared || swidget->use_count > 0) in sof_unprepare_widgets_in_path()
410 widget_ops[widget->id].ipc_unprepare(swidget); in sof_unprepare_widgets_in_path()
412 swidget->prepared = false; in sof_unprepare_widgets_in_path()
435 struct snd_sof_widget *swidget = widget->dobj.private; in sof_prepare_widgets_in_path() local
447 if (!swidget || !widget_ops[widget->id].ipc_prepare || swidget->prepared) in sof_prepare_widgets_in_path()
451 ret = widget_ops[widget->id].ipc_prepare(swidget, fe_params, platform_params, in sof_prepare_widgets_in_path()
458 swidget->prepared = true; in sof_prepare_widgets_in_path()
474 swidget && swidget->prepared) { in sof_prepare_widgets_in_path()
475 widget_ops[widget->id].ipc_unprepare(swidget); in sof_prepare_widgets_in_path()
476 swidget->prepared = false; in sof_prepare_widgets_in_path()
535 struct snd_sof_widget *swidget = widget->dobj.private; in sof_set_up_widgets_in_path() local
543 if (swidget) { in sof_set_up_widgets_in_path()
561 if (spipe == swidget->spipe) in sof_set_up_widgets_in_path()
567 pipeline_list->pipelines[i] = swidget->spipe; in sof_set_up_widgets_in_path()
582 if (swidget) in sof_set_up_widgets_in_path()
583 sof_widget_free(sdev, swidget); in sof_set_up_widgets_in_path()
703 struct snd_sof_widget *swidget = widget->dobj.private; in sof_widget_list_setup() local
707 if (!swidget || sdev->dspless_mode_selected) in sof_widget_list_setup()
710 spipe = swidget->spipe; in sof_widget_list_setup()
713 swidget->widget->name); in sof_widget_list_setup()
721 swidget->widget->name); in sof_widget_list_setup()
907 struct snd_sof_widget *swidget; in snd_sof_find_swidget() local
909 list_for_each_entry(swidget, &sdev->widget_list, list) { in snd_sof_find_swidget()
910 if (strcmp(name, swidget->widget->name) == 0) in snd_sof_find_swidget()
911 return swidget; in snd_sof_find_swidget()
923 struct snd_sof_widget *swidget; in snd_sof_find_swidget_sname() local
931 list_for_each_entry(swidget, &sdev->widget_list, list) { in snd_sof_find_swidget_sname()
932 if (!strcmp(pcm_name, swidget->widget->sname) && in snd_sof_find_swidget_sname()
933 swidget->id == type) in snd_sof_find_swidget_sname()
934 return swidget; in snd_sof_find_swidget_sname()