Lines Matching refs:elem
148 static int copy_tlv(struct tplg_elem *elem, struct tplg_elem *ref)
150 struct snd_soc_tplg_mixer_control *mixer_ctrl = elem->mixer_ctrl;
153 tplg_dbg("TLV '%s' used by '%s", ref->id, elem->id);
162 struct tplg_elem *elem)
168 base = &elem->ref_list;
170 /* for each ref in this control elem */
174 if (ref->elem)
178 ref->elem = tplg_elem_lookup(&tplg->tlv_list,
179 ref->id, SND_TPLG_TYPE_TLV, elem->index);
180 if (ref->elem)
181 err = copy_tlv(elem, ref->elem);
184 err = tplg_copy_data(tplg, elem, ref);
189 if (!ref->elem) {
191 " control '%s'", ref->id, elem->id);
213 struct tplg_elem *elem)
219 base = &elem->ref_list;
224 if (ref->elem)
228 ref->elem = tplg_elem_lookup(&tplg->text_list,
229 ref->id, SND_TPLG_TYPE_TEXT, elem->index);
230 if (ref->elem)
231 copy_enum_texts(elem, ref->elem);
234 err = tplg_copy_data(tplg, elem, ref);
238 if (!ref->elem) {
240 " control '%s'", ref->id, elem->id);
249 static int tplg_build_bytes_control(snd_tplg_t *tplg, struct tplg_elem *elem)
255 base = &elem->ref_list;
260 if (ref->elem)
264 err = tplg_copy_data(tplg, elem, ref);
276 struct tplg_elem *elem;
282 elem = list_entry(pos, struct tplg_elem, list);
283 err = tplg_build_mixer_control(tplg, elem);
294 elem = list_entry(pos, struct tplg_elem, list);
295 err = tplg_build_enum_control(tplg, elem);
306 elem = list_entry(pos, struct tplg_elem, list);
307 err = tplg_build_bytes_control(tplg, elem);
324 static int tplg_parse_tlv_dbscale(snd_config_t *cfg, struct tplg_elem *elem)
328 struct snd_soc_tplg_ctl_tlv *tplg_tlv = elem->tlv;
333 tplg_dbg(" scale: %s", elem->id);
375 struct tplg_elem *elem;
377 elem = tplg_elem_new_common(tplg, cfg, NULL, SND_TPLG_TYPE_TLV);
378 if (!elem)
388 err = tplg_parse_tlv_dbscale(n, elem);
402 struct tplg_elem *elem,
405 struct snd_soc_tplg_ctl_tlv *tlv = elem->tlv;
415 err = tplg_save_printf(dst, NULL, "'%s' {\n", elem->id);
437 struct tplg_elem *elem;
444 elem = tplg_elem_new_common(tplg, cfg, NULL, SND_TPLG_TYPE_BYTES);
445 if (!elem)
448 be = elem->bytes_ext;
449 be->size = elem->size;
450 snd_strlcpy(be->hdr.name, elem->id, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
453 tplg_dbg(" Control Bytes: %s", elem->id);
503 err = tplg_parse_refs(n, elem, SND_TPLG_TYPE_DATA);
513 err = tplg_ref_add(elem, SND_TPLG_TYPE_TLV, val);
560 struct tplg_elem *elem,
563 struct snd_soc_tplg_bytes_control *be = elem->bytes_ext;
571 err = tplg_save_printf(dst, NULL, "'%s' {\n", elem->id);
574 if (err >= 0 && elem->index > 0)
575 err = tplg_save_printf(dst, pfx, "\tindex %u\n", elem->index);
591 err = tplg_save_refs(tplg, elem, SND_TPLG_TYPE_TLV,
594 err = tplg_save_refs(tplg, elem, SND_TPLG_TYPE_DATA,
606 struct tplg_elem *elem;
613 elem = tplg_elem_new_common(tplg, cfg, NULL, SND_TPLG_TYPE_ENUM);
614 if (!elem)
617 ec = elem->enum_ctrl;
618 snd_strlcpy(ec->hdr.name, elem->id, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
620 ec->size = elem->size;
628 tplg_dbg(" Control Enum: %s", elem->id);
646 tplg_ref_add(elem, SND_TPLG_TYPE_TEXT, val);
653 SNDERR("too many channels %s", elem->id);
675 err = tplg_parse_refs(n, elem, SND_TPLG_TYPE_DATA);
700 struct tplg_elem *elem,
703 struct snd_soc_tplg_enum_control *ec = elem->enum_ctrl;
711 err = tplg_save_printf(dst, NULL, "'%s' {\n", elem->id);
714 if (err >= 0 && elem->index > 0)
715 err = tplg_save_printf(dst, pfx, "\tindex %u\n", elem->index);
717 err = tplg_save_refs(tplg, elem, SND_TPLG_TYPE_TEXT,
727 err = tplg_save_refs(tplg, elem, SND_TPLG_TYPE_DATA,
743 struct tplg_elem *elem;
750 elem = tplg_elem_new_common(tplg, cfg, NULL, SND_TPLG_TYPE_MIXER);
751 if (!elem)
755 mc = elem->mixer_ctrl;
756 snd_strlcpy(mc->hdr.name, elem->id, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
758 mc->size = elem->size;
765 tplg_dbg(" Control Mixer: %s", elem->id);
781 SNDERR("too many channels %s", elem->id);
825 err = tplg_ref_add(elem, SND_TPLG_TYPE_TLV, val);
835 err = tplg_parse_refs(n, elem, SND_TPLG_TYPE_DATA);
862 struct tplg_elem *elem,
865 struct snd_soc_tplg_mixer_control *mc = elem->mixer_ctrl;
871 err = tplg_save_printf(dst, NULL, "'%s' {\n", elem->id);
875 if (err >= 0 && elem->index > 0)
876 err = tplg_save_printf(dst, pfx, "\tindex %u\n", elem->index);
891 err = tplg_save_refs(tplg, elem, SND_TPLG_TYPE_TLV,
894 err = tplg_save_refs(tplg, elem, SND_TPLG_TYPE_DATA,
906 struct tplg_elem *elem;
943 elem = tplg_elem_new_common(tplg, NULL, parent->id,
945 if (!elem)
948 tlv = elem->tlv;
982 struct tplg_elem *elem;
992 elem = tplg_elem_new_common(tplg, NULL, mixer->hdr.name,
994 if (!elem)
998 mc = elem->mixer_ctrl;
999 mc->size = elem->size;
1000 ret = init_ctl_hdr(tplg, elem, &mc->hdr, &mixer->hdr);
1002 tplg_elem_free(elem);
1030 ret = tplg_add_data(tplg, elem, priv,
1037 *e = elem;
1046 struct tplg_elem *elem;
1056 elem = tplg_elem_new_common(tplg, NULL, enum_ctl->hdr.name,
1058 if (!elem)
1061 ec = elem->enum_ctrl;
1062 ec->size = elem->size;
1063 ret = init_ctl_hdr(tplg, elem, &ec->hdr, &enum_ctl->hdr);
1065 tplg_elem_free(elem);
1104 tplg_ref_add(elem, SND_TPLG_TYPE_TEXT, enum_ctl->hdr.name);
1121 ret = tplg_add_data(tplg, elem, priv,
1128 *e = elem;
1137 struct tplg_elem *elem;
1147 elem = tplg_elem_new_common(tplg, NULL, bytes_ctl->hdr.name,
1149 if (!elem)
1152 be = elem->bytes_ext;
1153 be->size = elem->size;
1154 ret = init_ctl_hdr(tplg, elem, &be->hdr, &bytes_ctl->hdr);
1156 tplg_elem_free(elem);
1170 ret = tplg_add_data(tplg, elem, priv,
1182 tplg_elem_free(elem);
1187 tplg_elem_free(elem);
1193 *e = elem;