Lines Matching refs:elem

75 static int copy_dapm_control(struct tplg_elem *elem, struct tplg_elem *ref)
77 struct snd_soc_tplg_dapm_widget *widget = elem->widget;
79 tplg_dbg("Control '%s' used by '%s'", ref->id, elem->id);
81 elem->size, ref->size, elem->size + ref->size,
84 widget = realloc(widget, elem->size + ref->size);
88 elem->widget = widget;
91 memcpy((void*)widget + elem->size, ref->obj, ref->size);
92 elem->size += ref->size;
100 static int tplg_build_widget(snd_tplg_t *tplg, struct tplg_elem *elem)
106 base = &elem->ref_list;
117 err = tplg_copy_data(tplg, elem, ref);
129 if (!ref->elem)
130 ref->elem = tplg_elem_lookup(&tplg->mixer_list,
131 ref->id, SND_TPLG_TYPE_MIXER, elem->index);
132 if (ref->elem)
133 err = copy_dapm_control(elem, ref->elem);
137 if (!ref->elem)
138 ref->elem = tplg_elem_lookup(&tplg->enum_list,
139 ref->id, SND_TPLG_TYPE_ENUM, elem->index);
140 if (ref->elem)
141 err = copy_dapm_control(elem, ref->elem);
145 if (!ref->elem)
146 ref->elem = tplg_elem_lookup(&tplg->bytes_ext_list,
147 ref->id, SND_TPLG_TYPE_BYTES, elem->index);
148 if (ref->elem)
149 err = copy_dapm_control(elem, ref->elem);
156 if (!ref->elem) {
158 ref->id, elem->id);
173 struct tplg_elem *elem;
179 elem = list_entry(pos, struct tplg_elem, list);
180 if (!elem->widget || elem->type != SND_TPLG_TYPE_DAPM_WIDGET) {
181 SNDERR("invalid widget '%s'", elem->id);
185 err = tplg_build_widget(tplg, elem);
199 struct tplg_elem *elem;
205 elem = list_entry(pos, struct tplg_elem, list);
207 if (!elem->route || elem->type != SND_TPLG_TYPE_DAPM_GRAPH) {
208 SNDERR("invalid route '%s'", elem->id);
212 route = elem->route;
230 SND_TPLG_TYPE_MIXER, elem->index) &&
232 SND_TPLG_TYPE_ENUM, elem->index)) {
259 struct tplg_elem *elem;
262 elem = tplg_elem_new();
263 if (!elem)
266 elem->index = index;
268 tplg_elem_insert(elem, &tplg->route_list);
270 list_add_tail(&elem->list, &tplg->route_list);
271 strcpy(elem->id, "line");
272 elem->type = SND_TPLG_TYPE_DAPM_GRAPH;
273 elem->size = sizeof(*line);
277 tplg_elem_free(elem);
280 elem->route = line;
282 return elem;
340 struct tplg_elem *elem;
351 elem = tplg_elem_new_route(tplg, index);
352 if (!elem)
354 line = elem->route;
423 struct tplg_elem *elem;
432 elem = list_entry(pos, struct tplg_elem, list);
433 if (!elem->route || elem->type != SND_TPLG_TYPE_DAPM_GRAPH)
435 if (index >= 0 && elem->index != index)
437 if (old_index != elem->index) {
439 old_index = elem->index;
459 elem = list_entry(pos, struct tplg_elem, list);
460 if (!elem->route || elem->type != SND_TPLG_TYPE_DAPM_GRAPH)
462 if (index >= 0 && elem->index != index)
464 if (old_index != elem->index) {
473 old_index = elem->index;
479 elem->index);
489 route = elem->route;
514 struct tplg_elem *elem;
520 elem = tplg_elem_new_common(tplg, cfg, NULL, SND_TPLG_TYPE_DAPM_WIDGET);
521 if (!elem)
524 tplg_dbg(" Widget: %s", elem->id);
526 widget = elem->widget;
527 snd_strlcpy(widget->name, elem->id, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
528 widget->size = elem->size;
549 elem->id, val);
646 err = tplg_parse_refs(n, elem, SND_TPLG_TYPE_ENUM);
654 err = tplg_parse_refs(n, elem, SND_TPLG_TYPE_MIXER);
662 err = tplg_parse_refs(n, elem, SND_TPLG_TYPE_BYTES);
670 err = tplg_parse_refs(n, elem, SND_TPLG_TYPE_DATA);
682 struct tplg_elem *elem,
685 struct snd_soc_tplg_dapm_widget *widget = elem->widget;
690 err = tplg_save_printf(dst, NULL, "'%s' {\n", elem->id);
691 if (err >= 0 && elem->index)
693 elem->index);
727 err = tplg_save_refs(tplg, elem, SND_TPLG_TYPE_ENUM,
730 err = tplg_save_refs(tplg, elem, SND_TPLG_TYPE_MIXER,
733 err = tplg_save_refs(tplg, elem, SND_TPLG_TYPE_BYTES,
736 err = tplg_save_refs(tplg, elem, SND_TPLG_TYPE_DATA,
745 struct tplg_elem *elem;
751 elem = tplg_elem_new_route(tplg, index);
752 if (!elem)
755 line = elem->route;
771 ret = tplg_add_route(tplg, gt->elem + i, t->index);
783 struct tplg_elem *elem;
788 elem = tplg_elem_new_common(tplg, NULL, wt->name,
790 if (!elem)
794 w = elem->widget;
795 w->size = elem->size;
812 ret = tplg_add_data(tplg, elem, wt->priv,
815 tplg_elem_free(elem);
829 tplg_elem_free(elem);
857 tplg_elem_free(elem);
861 ret = tplg_ref_add_elem(elem, elem_ctl);
863 tplg_elem_free(elem);
1059 for (ge = gt->elem; size > 0; ge++) {