[alsa-devel] [PATCH 3/6] topology: Parse flags for PCM

Lin, Mengdong mengdong.lin at intel.com
Sat Nov 5 17:54:02 CET 2016


> -----Original Message-----
> From: Takashi Iwai [mailto:tiwai at suse.de]
> Sent: Saturday, November 5, 2016 11:46 PM
> >
> > +/* parse a flag bit of the given mask */ static int
> > +parse_flag(snd_config_t *n, unsigned int mask_in,
> > +		      unsigned int *mask, unsigned int *flags) {
> > +	const char *val = NULL;
> > +
> > +	if (snd_config_get_string(n, &val) < 0)
> > +		return -EINVAL;
> > +
> > +	*mask |= mask_in;
> > +	if (strcmp(val, "true") == 0)
> > +		*flags |= mask_in;
> > +	else
> > +		*flags &= ~mask_in;
> 
> This can be simplified with snd_config_get_bool().

Okay, I'll fix it in my later patches. Thank you so much for the review!

There will be ~15 patches left for topology user space. I'll split into 2 series.

Regards
Mengdong

> 
> 
> thanks,
> 
> Takashi
> 
> > +
> > +	return 0;
> > +}
> > +
> >  /* Parse pcm (for front end DAI & DAI link) */  int
> > tplg_parse_pcm(snd_tplg_t *tplg,
> >  	snd_config_t *cfg, void *private ATTRIBUTE_UNUSED) @@ -430,6
> +448,34
> > @@ int tplg_parse_pcm(snd_tplg_t *tplg,
> >  				return err;
> >  			continue;
> >  		}
> > +
> > +		/* flags */
> > +		if (strcmp(id, "symmetric_rates") == 0) {
> > +			err = parse_flag(n,
> > +
> 	SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_RATES,
> > +				&pcm->flag_mask, &pcm->flags);
> > +			if (err < 0)
> > +				return err;
> > +			continue;
> > +		}
> > +
> > +		if (strcmp(id, "symmetric_channels") == 0) {
> > +			err = parse_flag(n,
> > +
> 	SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_CHANNELS,
> > +				&pcm->flag_mask, &pcm->flags);
> > +			if (err < 0)
> > +				return err;
> > +			continue;
> > +		}
> > +
> > +		if (strcmp(id, "symmetric_sample_bits") == 0) {
> > +			err = parse_flag(n,
> > +
> 	SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_SAMPLEBITS,
> > +				&pcm->flag_mask, &pcm->flags);
> > +			if (err < 0)
> > +				return err;
> > +			continue;
> > +		}
> >  	}
> >
> >  	return 0;
> > @@ -610,6 +656,9 @@ int tplg_add_pcm_object(snd_tplg_t *tplg,
> snd_tplg_obj_template_t *t)
> >  			tplg_add_stream_caps(&pcm->caps[i], pcm_tpl-
> >caps[i]);
> >  	}
> >
> > +	pcm->flag_mask = pcm_tpl->flag_mask;
> > +	pcm->flags = pcm_tpl->flags;
> > +
> >  	pcm->num_streams = pcm_tpl->num_streams;
> >  	for (i = 0; i < pcm_tpl->num_streams; i++)
> >  		tplg_add_stream_object(&pcm->stream[i], &pcm_tpl-
> >stream[i]);
> > --
> > 2.7.4
> >


More information about the Alsa-devel mailing list