Lines Matching defs:tplg

110 int tplg_parse_compound(snd_tplg_t *tplg, snd_config_t *cfg,
137 err = fcn(tplg, n, private);
145 static int tplg_parse_config(snd_tplg_t *tplg, snd_config_t *cfg)
147 int (*parser)(snd_tplg_t *tplg, snd_config_t *cfg, void *priv);
185 err = tplg_parse_compound(tplg, n, parser, NULL);
192 static int tplg_load_config(snd_tplg_t *tplg, snd_input_t *in)
208 ret = tplg_parse_config(tplg, top);
218 static int tplg_build_integ(snd_tplg_t *tplg)
222 err = tplg_build_data(tplg);
226 err = tplg_build_manifest_data(tplg);
230 err = tplg_build_controls(tplg);
234 err = tplg_build_widgets(tplg);
238 err = tplg_build_pcms(tplg, SND_TPLG_TYPE_PCM);
242 err = tplg_build_dais(tplg, SND_TPLG_TYPE_DAI);
246 err = tplg_build_links(tplg, SND_TPLG_TYPE_BE);
250 err = tplg_build_links(tplg, SND_TPLG_TYPE_CC);
254 err = tplg_build_routes(tplg);
261 int snd_tplg_load(snd_tplg_t *tplg, const char *buf, size_t size)
272 err = tplg_load_config(tplg, in);
277 static int tplg_build(snd_tplg_t *tplg)
281 err = tplg_build_integ(tplg);
287 err = tplg_write_data(tplg);
295 int snd_tplg_build_file(snd_tplg_t *tplg,
316 err = tplg_load_config(tplg, in);
321 return snd_tplg_build(tplg, outfile);
324 int snd_tplg_add_object(snd_tplg_t *tplg, snd_tplg_obj_template_t *t)
328 return tplg_add_mixer_object(tplg, t);
330 return tplg_add_enum_object(tplg, t);
332 return tplg_add_bytes_object(tplg, t);
334 return tplg_add_widget_object(tplg, t);
336 return tplg_add_graph_object(tplg, t);
338 return tplg_add_pcm_object(tplg, t);
340 return tplg_add_dai_object(tplg, t);
344 return tplg_add_link_object(tplg, t);
351 int snd_tplg_build(snd_tplg_t *tplg, const char *outfile)
356 err = tplg_build(tplg);
365 r = write(fd, tplg->bin, tplg->bin_size);
372 if ((size_t)r != tplg->bin_size) {
373 SNDERR("partial write (%zd != %zd)", r, tplg->bin_size);
379 int snd_tplg_build_bin(snd_tplg_t *tplg,
384 err = tplg_build(tplg);
388 *bin = tplg->bin;
389 *size = tplg->bin_size;
390 tplg->bin = NULL;
391 tplg->bin_size = tplg->bin_pos = 0;
395 int snd_tplg_set_manifest_data(snd_tplg_t *tplg, const void *data, int len)
399 elem = tplg_elem_type_lookup(tplg, SND_TPLG_TYPE_MANIFEST);
401 elem = tplg_elem_new_common(tplg, NULL, "manifest",
405 tplg->manifest.size = elem->size;
411 return tplg_add_data_bytes(tplg, elem, NULL, data, len);
414 int snd_tplg_set_version(snd_tplg_t *tplg, unsigned int version)
416 tplg->version = version;
421 void snd_tplg_verbose(snd_tplg_t *tplg, int verbose)
423 tplg->verbose = verbose;
436 snd_tplg_t *tplg;
443 tplg = calloc(1, sizeof(snd_tplg_t));
444 if (!tplg)
447 tplg->verbose = !!(flags & SND_TPLG_CREATE_VERBOSE);
448 tplg->dapm_sort = (flags & SND_TPLG_CREATE_DAPM_NOSORT) == 0;
450 tplg->manifest.size = sizeof(struct snd_soc_tplg_manifest);
452 INIT_LIST_HEAD(&tplg->tlv_list);
453 INIT_LIST_HEAD(&tplg->widget_list);
454 INIT_LIST_HEAD(&tplg->pcm_list);
455 INIT_LIST_HEAD(&tplg->dai_list);
456 INIT_LIST_HEAD(&tplg->be_list);
457 INIT_LIST_HEAD(&tplg->cc_list);
458 INIT_LIST_HEAD(&tplg->route_list);
459 INIT_LIST_HEAD(&tplg->pdata_list);
460 INIT_LIST_HEAD(&tplg->manifest_list);
461 INIT_LIST_HEAD(&tplg->text_list);
462 INIT_LIST_HEAD(&tplg->pcm_config_list);
463 INIT_LIST_HEAD(&tplg->pcm_caps_list);
464 INIT_LIST_HEAD(&tplg->mixer_list);
465 INIT_LIST_HEAD(&tplg->enum_list);
466 INIT_LIST_HEAD(&tplg->bytes_ext_list);
467 INIT_LIST_HEAD(&tplg->token_list);
468 INIT_LIST_HEAD(&tplg->tuple_list);
469 INIT_LIST_HEAD(&tplg->hw_cfg_list);
471 return tplg;
479 void snd_tplg_free(snd_tplg_t *tplg)
481 free(tplg->bin);
482 free(tplg->manifest_pdata);
484 tplg_elem_free_list(&tplg->tlv_list);
485 tplg_elem_free_list(&tplg->widget_list);
486 tplg_elem_free_list(&tplg->pcm_list);
487 tplg_elem_free_list(&tplg->dai_list);
488 tplg_elem_free_list(&tplg->be_list);
489 tplg_elem_free_list(&tplg->cc_list);
490 tplg_elem_free_list(&tplg->route_list);
491 tplg_elem_free_list(&tplg->pdata_list);
492 tplg_elem_free_list(&tplg->manifest_list);
493 tplg_elem_free_list(&tplg->text_list);
494 tplg_elem_free_list(&tplg->pcm_config_list);
495 tplg_elem_free_list(&tplg->pcm_caps_list);
496 tplg_elem_free_list(&tplg->mixer_list);
497 tplg_elem_free_list(&tplg->enum_list);
498 tplg_elem_free_list(&tplg->bytes_ext_list);
499 tplg_elem_free_list(&tplg->token_list);
500 tplg_elem_free_list(&tplg->tuple_list);
501 tplg_elem_free_list(&tplg->hw_cfg_list);
503 free(tplg);