selector: use base configuration from the common location

Instead of saving a local copy of the base configuration, use the
common one.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This commit is contained in:
Guennadi Liakhovetski 2022-10-21 10:57:05 +02:00 committed by Liam Girdwood
parent 5f92e7645e
commit 7ab88ad9be
2 changed files with 18 additions and 21 deletions

View File

@ -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,

View File

@ -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