[alsa-devel] [PATCH, alsa-lib 1/2] topology: Fix parsing config with multiple hw_configs
Kirill Marinushkin
k.marinushkin at gmail.com
Tue Feb 20 18:08:14 CET 2018
On 02/19/18 07:07, Kirill Marinushkin wrote:
> Currently, if the config file includes several hw_configs sections,
> parse_hw_config_refs() returns after parsing only the first section.
>
> For example, the following config, based on
> alsa-lib/src/conf/topology/broadwell/broadwell.conf, is parsed incorrectly:
>
> ~~~~
> SectionHWConfig."CodecHWConfig" {
> id "1"
> format "I2S" # physical audio format.
> bclk "master" # Platform is master of bit clock
> fsync "master" # platform is master of fsync
> }
>
> SectionHWConfig."CodecHWConfig2" {
> id "2"
> format "AC97"
> }
>
> SectionLink."Codec" {
>
> # used for binding to the physical link
> id "0"
>
> hw_configs [
> "CodecHWConfig"
> "CodecHWConfig2"
> ]
>
> default_hw_conf_id "2"
> }
> ~~~~
>
> Signed-off-by: Kirill Marinushkin <k.marinushkin at gmail.com>
> Cc: alsa-devel at alsa-project.org
> Cc: patch at alsa-project.org
> ---
> src/topology/pcm.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/topology/pcm.c b/src/topology/pcm.c
> index 58cee31d..d3836677 100644
> --- a/src/topology/pcm.c
> +++ b/src/topology/pcm.c
> @@ -882,6 +882,7 @@ static int parse_hw_config_refs(snd_tplg_t *tplg, snd_config_t *cfg,
> /* refer to a list of HW configs */
> snd_config_for_each(i, next, cfg) {
> const char *val;
> + int err;
>
> n = snd_config_iterator_entry(i);
> if (snd_config_get_string(n, &val) < 0)
> @@ -893,7 +894,9 @@ static int parse_hw_config_refs(snd_tplg_t *tplg, snd_config_t *cfg,
> }
>
> link->num_hw_configs++;
> - return tplg_ref_add(elem, SND_TPLG_TYPE_HW_CONFIG, val);
> + err = tplg_ref_add(elem, SND_TPLG_TYPE_HW_CONFIG, val);
> + if (err < 0)
> + return err;
> }
>
> return 0;
This patch is outdated. Patch v2 is sent in a different thread to replace it.
Best Regards,
Kirill
More information about the Alsa-devel
mailing list