Lines Matching refs:elem
28 struct snd_soc_tplg_private *get_priv_data(struct tplg_elem *elem)
32 switch (elem->type) {
34 priv = &elem->manifest->priv;
38 priv = &elem->mixer_ctrl->priv;
42 priv = &elem->enum_ctrl->priv;
46 priv = &elem->bytes_ext->priv;
50 priv = &elem->widget->priv;
54 priv = &elem->dai->priv;
57 priv = &elem->link->priv;
60 priv = &elem->pcm->priv;
64 elem->id, elem->type);
73 int tplg_parse_refs(snd_config_t *cfg, struct tplg_elem *elem,
90 err = tplg_ref_add(elem, type, val);
97 SNDERR("compound type expected for %s", elem->id);
111 err = tplg_ref_add(elem, type, val);
122 struct tplg_elem *elem, unsigned int type,
132 list_for_each(pos, &elem->ref_list) {
149 list_for_each(pos, &elem->ref_list) {
162 static int tplg_parse_data_file(snd_config_t *cfg, struct tplg_elem *elem)
172 tplg_dbg("data DataFile: %s", elem->id);
216 elem->data = priv;
218 elem->size = sizeof(*priv) + size;
233 static void dump_priv_data(struct tplg_elem *elem ATTRIBUTE_UNUSED)
236 struct snd_soc_tplg_private *priv = elem->data;
241 tplg_dbg(" elem size = %d, priv data size = %d",
242 elem->size, priv->size);
463 static int tplg_parse_data_hex(snd_config_t *cfg, struct tplg_elem *elem,
471 tplg_dbg(" data: %s", elem->id);
483 priv = elem->data;
492 esize = elem->size + size;
503 elem->data = priv;
505 elem->size = esize;
509 dump_priv_data(elem);
529 static struct tplg_elem *get_tokens(snd_tplg_t *tplg, struct tplg_elem *elem)
534 base = &elem->ref_list;
542 if (!ref->elem) {
543 ref->elem = tplg_elem_lookup(&tplg->token_list,
544 ref->id, SND_TPLG_TYPE_TOKEN, elem->index);
547 return ref->elem;
554 static bool has_tuples(struct tplg_elem *elem)
559 base = &elem->ref_list;
587 static int copy_tuples(struct tplg_elem *elem,
591 struct snd_soc_tplg_private *priv = elem->data, *priv2;
632 elem->data = priv;
674 static int build_tuples(snd_tplg_t *tplg, struct tplg_elem *elem)
681 base = &elem->ref_list;
689 tplg_dbg("tuples '%s' used by data '%s'", ref->id, elem->id);
691 if (!ref->elem)
692 ref->elem = tplg_elem_lookup(&tplg->tuple_list,
693 ref->id, SND_TPLG_TYPE_TUPLE, elem->index);
694 tuples = ref->elem;
707 err = copy_tuples(elem, tuples->tuples, tokens->tokens);
1016 struct tplg_elem *elem,
1019 struct tplg_vendor_tuples *tuples = elem->tuples;
1042 struct tplg_elem *elem;
1046 elem = tplg_elem_new_common(tplg, cfg, NULL, SND_TPLG_TYPE_TOKEN);
1047 if (!elem)
1057 tplg_dbg(" Vendor tokens: %s, %d tokens", elem->id, num_tokens);
1063 elem->tokens = tokens;
1087 struct tplg_elem *elem,
1090 struct tplg_vendor_tokens *tokens = elem->tokens;
1097 err = tplg_save_printf(dst, NULL, "'%s' {\n", elem->id);
1118 struct tplg_elem *elem;
1122 elem = tplg_elem_new_common(tplg, cfg, NULL, SND_TPLG_TYPE_TUPLE);
1123 if (!elem)
1126 tplg_dbg(" Vendor Tuples: %s", elem->id);
1131 elem->tuples = tuples;
1142 tplg_ref_add(elem, SND_TPLG_TYPE_TOKEN, value);
1158 struct tplg_elem *elem,
1164 if (!elem->tuples)
1167 err = tplg_save_printf(dst, NULL, "'%s' {\n", elem->id);
1170 err = tplg_save_refs(tplg, elem, SND_TPLG_TYPE_TOKEN,
1173 err = tplg_save_tuple_sets(tplg, elem, dst, pfx2);
1200 struct tplg_elem *elem;
1211 elem = tplg_elem_new_common(tplg, cfg, NULL, SND_TPLG_TYPE_MANIFEST);
1212 if (!elem)
1215 manifest = elem->manifest;
1216 manifest->size = elem->size;
1218 tplg_dbg(" Manifest: %s", elem->id);
1233 err = tplg_parse_refs(n, elem, SND_TPLG_TYPE_DATA);
1245 struct tplg_elem *elem, struct tplg_buf *dst,
1252 /* for each ref in this manifest elem */
1254 list_for_each(pos, &elem->ref_list) {
1262 "'%s'.comment 'empty'\n", elem->id);
1264 err = tplg_save_printf(dst, NULL, "'%s'.data [\n", elem->id);
1269 list_for_each(pos, &elem->ref_list) {
1275 elem->id, index, ref->id);
1295 struct tplg_elem *elem = NULL;
1303 elem = list_entry(pos, struct tplg_elem, list);
1307 if (!elem) /* no manifest data */
1310 base = &elem->ref_list;
1312 /* for each ref in this manifest elem */
1316 if (ref->elem)
1320 err = tplg_copy_data(tplg, elem, ref);
1326 manifest = elem->manifest;
1351 struct tplg_elem *elem;
1353 elem = tplg_elem_new_common(tplg, cfg, NULL, SND_TPLG_TYPE_DATA);
1354 if (!elem)
1365 err = tplg_parse_data_file(n, elem);
1374 err = tplg_parse_data_hex(n, elem, 1);
1383 err = tplg_parse_data_hex(n, elem, 2);
1392 err = tplg_parse_data_hex(n, elem, 4);
1401 err = tplg_parse_refs(n, elem, SND_TPLG_TYPE_TUPLE);
1411 elem->vendor_type = ival;
1412 tplg_dbg("\t%s: %d", id, elem->index);
1422 struct tplg_elem *elem,
1425 struct snd_soc_tplg_private *priv = elem->data;
1435 list_for_each(pos, &elem->ref_list) {
1440 if (elem->vendor_type > 0)
1444 err = tplg_save_printf(dst, NULL, "'%s' {\n", elem->id);
1448 err = tplg_save_printf(dst, NULL, "'%s'.", elem->id);
1484 err = tplg_save_refs(tplg, elem, SND_TPLG_TYPE_TUPLE,
1487 if (err >= 0 && elem->vendor_type > 0)
1489 elem->vendor_type);
1500 int tplg_copy_data(snd_tplg_t *tplg, struct tplg_elem *elem,
1509 ref->id, SND_TPLG_TYPE_DATA, elem->index);
1512 " element '%s'", ref->id, elem->id);
1516 tplg_dbg("Data '%s' used by '%s'", ref->id, elem->id);
1519 ref->elem = ref_elem;
1523 old_priv = get_priv_data(elem);
1529 obj = realloc(elem->obj,
1530 elem->size + priv_data_size);
1533 elem->obj = obj;
1535 priv = get_priv_data(elem);
1540 elem->size += priv_data_size;
1546 ref->elem = ref_elem;
1554 struct tplg_elem *elem;
1560 elem = list_entry(pos, struct tplg_elem, list);
1561 if (has_tuples(elem)) {
1562 err = build_tuples(tplg, elem);
1578 struct tplg_elem *elem;
1609 elem = tplg_elem_new_common(tplg, NULL, "manifest",
1611 if (!elem)
1615 return tplg_add_data(tplg, elem, bin, size);
1622 struct tplg_elem *elem;
1628 elem = tplg_elem_lookup(&tplg->token_list, parent->id,
1630 if (elem == NULL) {
1631 elem = tplg_elem_new_common(tplg, NULL, parent->id,
1633 if (!elem)
1637 tokens = elem->tokens;
1656 elem->tokens = tokens;
1881 struct tplg_elem *elem = NULL, *elem2 = NULL;
1902 err = tplg_ref_add(elem, SND_TPLG_TYPE_TOKEN, parent->id);
1919 elem = tplg_elem_new_common(tplg, NULL, id, SND_TPLG_TYPE_TUPLE);
1920 if (!elem)
1930 elem->tuples = tuples;
1952 if (tuples && elem && elem2) {
1953 err = tplg_ref_add(elem, SND_TPLG_TYPE_TOKEN, parent->id);
1972 struct tplg_elem *elem;
1979 elem = tplg_elem_new_common(tplg, NULL, id, SND_TPLG_TYPE_DATA);
1980 if (!elem)
1988 elem->data = priv;