[RFC 03/13] ASoC: Intel: avs: Parse module-extension tuples

Cezary Rojewski cezary.rojewski at intel.com
Mon Mar 21 11:33:13 CET 2022


On 2022-02-25 6:24 PM, Pierre-Louis Bossart wrote:
> 
>> +struct avs_tplg_modcfg_ext {
>> +	guid_t type;
>> +
>> +	union {
>> +		struct {
>> +			u16 num_input_pins;
>> +			u16 num_output_pins;
>> +			struct avs_tplg_pin_format *pin_fmts;
>> +		} generic;
>> +		struct {
>> +			struct avs_audio_format *out_fmt;
>> +			struct avs_audio_format *blob_fmt; /* optional override */
>> +			u32 feature_mask;
>> +			union avs_virtual_index vindex;
>> +			u32 dma_type;
>> +			u32 dma_buffer_size;
>> +			u32 config_length;
>> +			/* config_data part of priv data */
>> +		} copier;
>> +		struct {
>> +			u32 out_channel_config;
>> +			u32 coefficients_select;
>> +			s32 coefficients[AVS_CHANNELS_MAX];
>> +			u32 channel_map;
>> +		} updown_mix;
>> +		struct {
>> +			u32 out_freq;
>> +		} src;
>> +		struct {
>> +			u32 out_freq;
>> +			u8 mode;
>> +			u8 disable_jitter_buffer;
>> +		} asrc;
>> +		struct {
>> +			u32 cpc_lp_mode;
>> +		} wov;
>> +		struct {
>> +			struct avs_audio_format *ref_fmt;
>> +			struct avs_audio_format *out_fmt;
>> +			u32 cpc_lp_mode;
>> +		} aec;
>> +		struct {
>> +			struct avs_audio_format *ref_fmt;
>> +			struct avs_audio_format *out_fmt;
>> +		} mux;
>> +		struct {
>> +			struct avs_audio_format *out_fmt;
>> +		} micsel;
>> +	};
>> +};
> 
> I am struggling to reconcile the notion of 'extension' with a fixed
> structure that deals with Intel-specific modules.
> 
> How would a 3rd party add their own modules and expose parameters/tokens
> through the topology?


All vendor modules go into 'generic' bucket. Vendor cannot define any 
specific fields i.e. extend the 'generic' header structure. Everything 
that is specific to them has to go into so called payload that is part 
of almost every INIT_INSTANCE.


Regards,
Czarek


More information about the Alsa-devel mailing list