Lines Matching defs:swidget
46 struct snd_sof_widget *swidget)
49 struct snd_sof_pipeline *spipe = swidget->spipe;
54 if (!swidget->private)
57 trace_sof_widget_free(swidget);
60 if (--swidget->use_count)
63 pipe_widget = swidget->spipe->pipe_widget;
66 sof_reset_route_setup_status(sdev, swidget);
69 if (WIDGET_IS_DAI(swidget->id)) {
76 err = tplg_ops->dai_config(sdev, swidget, flags, &data);
79 swidget->widget->name);
85 ret = tplg_ops->widget_free(sdev, swidget);
94 if (swidget->id == snd_soc_dapm_scheduler) {
101 i, swidget->widget->name);
106 swidget->spipe->complete = 0;
110 * free the scheduler widget (same as pipe_widget) associated with the current swidget.
113 if (swidget->dynamic_pipeline_widget && swidget->id != snd_soc_dapm_scheduler) {
120 dev_dbg(sdev->dev, "widget %s freed\n", swidget->widget->name);
125 int sof_widget_free(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget)
129 mutex_lock(&swidget->setup_mutex);
130 ret = sof_widget_free_unlocked(sdev, swidget);
131 mutex_unlock(&swidget->setup_mutex);
138 struct snd_sof_widget *swidget)
141 struct snd_sof_pipeline *spipe = swidget->spipe;
147 if (!swidget->private)
150 trace_sof_widget_setup(swidget);
153 if (++swidget->use_count > 1)
163 if (swidget->dynamic_pipeline_widget && swidget->id != snd_soc_dapm_scheduler) {
164 if (!swidget->spipe || !swidget->spipe->pipe_widget) {
165 dev_err(sdev->dev, "No pipeline set for %s\n", swidget->widget->name);
170 ret = sof_widget_setup_unlocked(sdev, swidget->spipe->pipe_widget);
176 if (swidget->id == snd_soc_dapm_scheduler) {
181 i, swidget->widget->name);
189 ret = tplg_ops->widget_setup(sdev, swidget);
195 if (WIDGET_IS_DAI(swidget->id)) {
203 ret = tplg_ops->dai_config(sdev, swidget, flags, NULL);
211 ret = tplg_ops->control->widget_kcontrol_setup(sdev, swidget);
216 dev_dbg(sdev->dev, "widget %s setup complete\n", swidget->widget->name);
222 sof_widget_free_unlocked(sdev, swidget);
225 if (swidget->id != snd_soc_dapm_scheduler) {
226 sof_widget_free_unlocked(sdev, swidget->spipe->pipe_widget);
239 swidget->use_count--;
244 int sof_widget_setup(struct snd_sof_dev *sdev, struct snd_sof_widget *swidget)
248 mutex_lock(&swidget->setup_mutex);
249 ret = sof_widget_setup_unlocked(sdev, swidget);
250 mutex_unlock(&swidget->setup_mutex);
356 struct snd_sof_widget *swidget;
379 swidget = sroute->sink_widget;
381 swidget = sroute->src_widget;
383 mutex_lock(&swidget->setup_mutex);
384 if (!swidget->use_count) {
385 mutex_unlock(&swidget->setup_mutex);
399 mutex_unlock(&swidget->setup_mutex);
413 struct snd_sof_widget *swidget = widget->dobj.private;
421 if (!swidget || !swidget->prepared || swidget->use_count > 0)
427 widget_ops[widget->id].ipc_unprepare(swidget);
429 swidget->prepared = false;
452 struct snd_sof_widget *swidget = widget->dobj.private;
464 if (!swidget || !widget_ops[widget->id].ipc_prepare || swidget->prepared)
468 ret = widget_ops[widget->id].ipc_prepare(swidget, fe_params, platform_params,
475 swidget->prepared = true;
491 swidget && swidget->prepared) {
492 widget_ops[widget->id].ipc_unprepare(swidget);
493 swidget->prepared = false;
552 struct snd_sof_widget *swidget = widget->dobj.private;
560 if (swidget) {
578 if (spipe == swidget->spipe)
584 pipeline_list->pipelines[i] = swidget->spipe;
599 if (swidget)
600 sof_widget_free(sdev, swidget);
720 struct snd_sof_widget *swidget = widget->dobj.private;
724 if (!swidget || sdev->dspless_mode_selected)
727 spipe = swidget->spipe;
730 swidget->widget->name);
738 swidget->widget->name);
924 struct snd_sof_widget *swidget;
926 list_for_each_entry(swidget, &sdev->widget_list, list) {
927 if (strcmp(name, swidget->widget->name) == 0)
928 return swidget;
940 struct snd_sof_widget *swidget;
948 list_for_each_entry(swidget, &sdev->widget_list, list) {
949 if (!strcmp(pcm_name, swidget->widget->sname) &&
950 swidget->id == type)
951 return swidget;