diff --git a/src/audio/selector/selector.c b/src/audio/selector/selector.c index eca87ef59..9503e2d0f 100644 --- a/src/audio/selector/selector.c +++ b/src/audio/selector/selector.c @@ -572,26 +572,26 @@ UT_STATIC void sys_comp_selector_init(void) DECLARE_MODULE(sys_comp_selector_init); #else -static void build_config(struct comp_data *cd) +static void build_config(struct comp_data *cd, struct module_config *cfg) { enum sof_ipc_frame valid_format; int i; - cd->source_format = cd->md.base_cfg.audio_fmt.depth; - audio_stream_fmt_conversion(cd->md.base_cfg.audio_fmt.depth, - cd->md.base_cfg.audio_fmt.valid_bit_depth, + cd->source_format = cfg->base_cfg.audio_fmt.depth; + audio_stream_fmt_conversion(cfg->base_cfg.audio_fmt.depth, + cfg->base_cfg.audio_fmt.valid_bit_depth, &cd->source_format, &valid_format, - cd->md.base_cfg.audio_fmt.s_type); + cfg->base_cfg.audio_fmt.s_type); - audio_stream_fmt_conversion(cd->md.output_format.depth, - cd->md.output_format.valid_bit_depth, + audio_stream_fmt_conversion(cd->output_format.depth, + cd->output_format.valid_bit_depth, &cd->sink_format, &valid_format, - cd->md.output_format.s_type); + cd->output_format.s_type); - cd->config.in_channels_count = cd->md.base_cfg.audio_fmt.channels_count; - cd->config.out_channels_count = cd->md.output_format.channels_count; + cd->config.in_channels_count = cfg->base_cfg.audio_fmt.channels_count; + cd->config.out_channels_count = cd->output_format.channels_count; /* Build default coefficient array (unity Q10 on diagonal, i.e. pass-through mode) */ memset(&cd->coeffs_config, 0, sizeof(cd->coeffs_config)); @@ -603,6 +603,7 @@ static int selector_init(struct processing_module *mod) { struct module_data *md = &mod->priv; struct module_config *cfg = &md->cfg; + const struct ipc4_base_module_cfg *base_cfg = cfg->data; struct comp_data *cd; int ret; @@ -614,10 +615,11 @@ static int selector_init(struct processing_module *mod) md->private = cd; - ret = memcpy_s(&cd->md, sizeof(cd->md), cfg->data, sizeof(cd->md)); + ret = memcpy_s(&cd->output_format, sizeof(cd->output_format), + base_cfg + 1, sizeof(struct ipc4_audio_format)); assert(!ret); - build_config(cd); + build_config(cd, cfg); return 0; } @@ -638,10 +640,10 @@ static void set_selector_params(struct processing_module *mod, else params->channels = cd->config.out_channels_count; - params->rate = cd->md.base_cfg.audio_fmt.sampling_frequency; + params->rate = mod->priv.cfg.base_cfg.audio_fmt.sampling_frequency; params->frame_fmt = cd->source_format; - out_fmt = &cd->md.output_format; + out_fmt = &cd->output_format; for (i = 0; i < SOF_IPC_MAX_CHANNELS; i++) params->chmap[i] = (out_fmt->ch_map >> i * 4) & 0xf; @@ -679,7 +681,7 @@ static void set_selector_params(struct processing_module *mod, if (!source->hw_params_configured) { struct ipc4_audio_format *in_fmt; - in_fmt = &cd->md.base_cfg.audio_fmt; + in_fmt = &mod->priv.cfg.base_cfg.audio_fmt; source->stream.channels = in_fmt->channels_count; source->stream.rate = in_fmt->sampling_frequency; audio_stream_fmt_conversion(in_fmt->depth, diff --git a/src/include/sof/audio/selector.h b/src/include/sof/audio/selector.h index b4d426417..b504d6ae3 100644 --- a/src/include/sof/audio/selector.h +++ b/src/include/sof/audio/selector.h @@ -49,11 +49,6 @@ struct comp_dev; typedef void (*sel_func)(struct processing_module *mod, struct input_stream_buffer *bsource, struct output_stream_buffer *bsink, uint32_t frames); -struct micsel_data { - struct ipc4_base_module_cfg base_cfg; - struct ipc4_audio_format output_format; -}; - /** \brief IPC4 configuration IDs for selector. */ enum ipc4_selector_config_id { IPC4_SELECTOR_COEFFS_CONFIG_ID = 0, /**< Mixing coefficients config ID */ @@ -75,7 +70,7 @@ typedef void (*sel_func)(struct comp_dev *dev, struct audio_stream __sparse_cach /** \brief Selector component private data. */ struct comp_data { #if CONFIG_IPC_MAJOR_4 - struct micsel_data md; + struct ipc4_audio_format output_format; struct ipc4_selector_coeffs_config coeffs_config; #endif