From 48fef7a811e5e95a405a80ed9c256b489f605bc2 Mon Sep 17 00:00:00 2001 From: Ranjani Sridharan Date: Mon, 26 Apr 2021 11:33:12 -0700 Subject: [PATCH] topology: pre-process-obejct: add helper function to get the section config Add a helper function to retrieve the config node pointing to the section name for a given object. For ex: for the object, Object.Widget.pga.1{}, the function returns the config with id, "SectionWidget" in the output config. Signed-off-by: Ranjani Sridharan Signed-off-by: Jaroslav Kysela --- topology/pre-process-object.c | 18 ++++++++++++++++++ topology/pre-processor.h | 1 + 2 files changed, 19 insertions(+) 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);