> +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?