diff --git a/topology/pre-process-object.c b/topology/pre-process-object.c index 249bd7d..66116b4 100644 --- a/topology/pre-process-object.c +++ b/topology/pre-process-object.c @@ -738,6 +738,24 @@ static const struct build_function_map *tplg_object_get_map(struct tplg_pre_proc return NULL; } +/* search for section name based on class type and name and return the config in output_cfg */ +snd_config_t *tplg_object_get_section(struct tplg_pre_processor *tplg_pp, snd_config_t *class) +{ + const struct build_function_map *map; + snd_config_t *cfg = NULL; + int ret; + + map = tplg_object_get_map(tplg_pp, class); + if (!map) + return NULL; + + ret = snd_config_search(tplg_pp->output_cfg, map->section_name, &cfg); + if (ret < 0) + SNDERR("Section config for %s not found\n", map->section_name); + + return cfg; +} + /* return 1 if attribute not found in search_config, 0 on success and negative value on error */ static int tplg_object_copy_and_add_param(struct tplg_pre_processor *tplg_pp, snd_config_t *obj, diff --git a/topology/pre-processor.h b/topology/pre-processor.h index 5599ca2..8934e2f 100644 --- a/topology/pre-processor.h +++ b/topology/pre-processor.h @@ -61,6 +61,7 @@ snd_config_t *tplg_object_get_instance_config(struct tplg_pre_processor *tplg_pp snd_config_t *class_type); const char *tplg_object_get_name(struct tplg_pre_processor *tplg_pp, snd_config_t *object); +snd_config_t *tplg_object_get_section(struct tplg_pre_processor *tplg_pp, snd_config_t *class); /* class helpers */ snd_config_t *tplg_class_lookup(struct tplg_pre_processor *tplg_pp, snd_config_t *cfg);