Lines Matching refs:elem

244 int tplg_ref_add(struct tplg_elem *elem, int type, const char* id)
256 list_add_tail(&ref->list, &elem->ref_list);
260 /* directly add a reference elem */
261 int tplg_ref_add_elem(struct tplg_elem *elem, struct tplg_elem *elem_ref)
270 ref->elem = elem_ref;
273 list_add_tail(&ref->list, &elem->ref_list);
291 struct tplg_elem *elem;
293 elem = calloc(1, sizeof(*elem));
294 if (!elem)
297 INIT_LIST_HEAD(&elem->ref_list);
298 return elem;
301 void tplg_elem_free(struct tplg_elem *elem)
303 list_del(&elem->list);
305 tplg_ref_free_list(&elem->ref_list);
310 if (elem->obj) {
311 if (elem->free)
312 elem->free(elem->obj);
314 free(elem->obj);
317 free(elem);
323 struct tplg_elem *elem;
326 elem = list_entry(pos, struct tplg_elem, list);
327 tplg_elem_free(elem);
335 struct tplg_elem *elem;
342 elem = list_entry(pos, struct tplg_elem, list);
344 if (!strcmp(elem->id, id) && elem->type == type)
345 return elem;
349 && (elem->index > index))
362 struct tplg_elem *elem;
380 elem = list_entry(pos, struct tplg_elem, list);
381 return elem;
390 struct tplg_elem *elem;
393 elem = list_entry(pos, struct tplg_elem, list);
394 if (elem_p->index < elem->index)
408 struct tplg_elem *elem;
420 elem = tplg_elem_new();
421 if (!elem)
427 snd_strlcpy(elem->id, id, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
428 elem->id[SNDRV_CTL_ELEM_ID_NAME_MAXLEN - 1] = 0;
429 /* as we insert new elem based on the index value, move index
436 if (tplg_get_integer(n, &elem->index, 0)) {
437 free(elem);
440 if (elem->index < 0) {
441 free(elem);
447 snd_strlcpy(elem->id, name, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
458 free(elem);
463 tplg_elem_insert(elem, list);
465 elem->free = tptr->free;
466 elem->table = tptr;
472 free(elem);
476 elem->obj = obj;
477 elem->size = obj_size;
480 elem->type = type;
481 return elem;