From e847c8b270150353551d4720e382502c9a916496 Mon Sep 17 00:00:00 2001 From: Baofeng Tian Date: Mon, 31 Jul 2023 16:08:02 +0800 Subject: [PATCH 01/14] module_adapter: avoid module init crash in case of ipc data invalid In ipc3 module creation, it is possible that ipc data is invalid or corrupted, in this case, module init may crash. This patch is adding error handling to avoid crash. Signed-off-by: Baofeng Tian --- src/audio/module_adapter/module_adapter.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/audio/module_adapter/module_adapter.c b/src/audio/module_adapter/module_adapter.c index d40175c675db..ba4927df8978 100644 --- a/src/audio/module_adapter/module_adapter.c +++ b/src/audio/module_adapter/module_adapter.c @@ -130,6 +130,8 @@ struct comp_dev *module_adapter_new(const struct comp_driver *drv, goto err; } dst->init_data = dst->data; + } else { + goto err; } #else if (drv->type == SOF_COMP_MODULE_ADAPTER) { From 998f8248260568ada32b3d5997979e35d30e0870 Mon Sep 17 00:00:00 2001 From: Anas Nashif Date: Mon, 7 Aug 2023 16:42:49 +0000 Subject: [PATCH 02/14] platform: kconfig: remove undefined CAVS_LPRO_ONLY This kconfig was removed in 2d02dd0ed5c775ab4a0551b25e8a91d8fc8a310c, do not depend on it. Signed-off-by: Anas Nashif --- src/platform/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platform/Kconfig b/src/platform/Kconfig index 4f1b737b492e..861d9fc34c02 100644 --- a/src/platform/Kconfig +++ b/src/platform/Kconfig @@ -379,7 +379,7 @@ config CAVS_LPS config CAVS_USE_LPRO_IN_WAITI bool "Use low power ring oscillator in WFI" default n - depends on CAVS && !CAVS_LPRO_ONLY + depends on CAVS help Select if we want to use LPRO clock in waiti. After waiti exit clock source will be restored. From aa858dff6ba65f2f26cc69e8ff716afc94646341 Mon Sep 17 00:00:00 2001 From: Baofeng Tian Date: Tue, 11 Jul 2023 16:56:54 +0800 Subject: [PATCH 03/14] copier: refine host creation refine host creation to remove redundant parameters and code. Signed-off-by: Baofeng Tian --- src/audio/copier/copier.c | 3 +-- src/audio/copier/copier_host.c | 5 +++-- src/include/sof/audio/host_copier.h | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/audio/copier/copier.c b/src/audio/copier/copier.c index 90d09298a528..6f7705d90d20 100644 --- a/src/audio/copier/copier.c +++ b/src/audio/copier/copier.c @@ -101,8 +101,7 @@ static int copier_init(struct processing_module *mod) switch (node_id.f.dma_type) { case ipc4_hda_host_output_class: case ipc4_hda_host_input_class: - ret = copier_host_create(dev, cd, &dev->ipc_config, - copier, cd->direction, ipc_pipe->pipeline); + ret = copier_host_create(dev, cd, copier, ipc_pipe->pipeline); if (ret < 0) { comp_err(dev, "unable to create host"); goto error; diff --git a/src/audio/copier/copier_host.c b/src/audio/copier/copier_host.c index 3db69686e405..ed36419f86aa 100644 --- a/src/audio/copier/copier_host.c +++ b/src/audio/copier/copier_host.c @@ -123,13 +123,14 @@ static int init_pipeline_reg(struct comp_dev *dev) * component to support host gateway. */ int copier_host_create(struct comp_dev *parent_dev, struct copier_data *cd, - struct comp_ipc_config *config, const struct ipc4_copier_module_cfg *copier_cfg, - int dir, struct pipeline *pipeline) + struct pipeline *pipeline) { struct processing_module *mod = comp_get_drvdata(parent_dev); + struct comp_ipc_config *config = &parent_dev->ipc_config; struct ipc_config_host ipc_host; struct host_data *hd; + int dir = cd->direction; int ret; enum sof_ipc_frame in_frame_fmt, out_frame_fmt; enum sof_ipc_frame in_valid_fmt, out_valid_fmt; diff --git a/src/include/sof/audio/host_copier.h b/src/include/sof/audio/host_copier.h index 62bc00b0232d..8dee71b33332 100644 --- a/src/include/sof/audio/host_copier.h +++ b/src/include/sof/audio/host_copier.h @@ -116,9 +116,8 @@ int host_common_copy(struct host_data *hd, struct comp_dev *dev, copy_callback_t void host_common_update(struct host_data *hd, struct comp_dev *dev, uint32_t bytes); void host_common_one_shot(struct host_data *hd, uint32_t bytes); int copier_host_create(struct comp_dev *parent_dev, struct copier_data *cd, - struct comp_ipc_config *config, const struct ipc4_copier_module_cfg *copier_cfg, - int dir, struct pipeline *pipeline); + struct pipeline *pipeline); void copier_host_free(struct copier_data *cd); int copier_host_params(struct copier_data *cd, struct comp_dev *dev, struct sof_ipc_stream_params *params); From f639fc8e888b21c0506dc8ca857c7d8b0cf2b8b5 Mon Sep 17 00:00:00 2001 From: Baofeng Tian Date: Tue, 11 Jul 2023 21:32:25 +0800 Subject: [PATCH 04/14] copier: rename parent_dev to dev parent_dev previously used as copier device, and corresponding child_dev is host and dai, after host and dai device remove, there is no concept for parent_dev, rename it to dev. Signed-off-by: Baofeng Tian --- src/audio/copier/copier_dai.c | 48 +++++++++++++-------------- src/audio/copier/copier_generic.c | 4 +-- src/audio/copier/copier_host.c | 20 +++++------ src/audio/copier/copier_ipcgtw.c | 20 +++++------ src/include/ipc4/copier.h | 2 +- src/include/sof/audio/dai_copier.h | 2 +- src/include/sof/audio/host_copier.h | 2 +- src/include/sof/audio/ipcgtw_copier.h | 2 +- 8 files changed, 50 insertions(+), 50 deletions(-) diff --git a/src/audio/copier/copier_dai.c b/src/audio/copier/copier_dai.c index dec0a7d46ad2..71faa939a6aa 100644 --- a/src/audio/copier/copier_dai.c +++ b/src/audio/copier/copier_dai.c @@ -31,18 +31,18 @@ static uint32_t bitmask_to_nibble_channel_map(uint8_t bitmask) return nibble_map; } -static int copier_set_alh_multi_gtw_channel_map(struct comp_dev *parent_dev, +static int copier_set_alh_multi_gtw_channel_map(struct comp_dev *dev, const struct ipc4_copier_module_cfg *copier_cfg, int index) { - struct processing_module *mod = comp_get_drvdata(parent_dev); + struct processing_module *mod = comp_get_drvdata(dev); struct copier_data *cd = module_get_private_data(mod); const struct sof_alh_configuration_blob *alh_blob; uint8_t chan_bitmask; int channels; if (!copier_cfg->gtw_cfg.config_length) { - comp_err(parent_dev, "No ipc4_alh_multi_gtw_cfg found in blob!"); + comp_err(dev, "No ipc4_alh_multi_gtw_cfg found in blob!"); return -EINVAL; } @@ -54,7 +54,7 @@ static int copier_set_alh_multi_gtw_channel_map(struct comp_dev *parent_dev, channels = popcount(chan_bitmask); if (channels < 1 || channels > SOF_IPC_MAX_CHANNELS) { - comp_err(parent_dev, "Invalid channels mask: 0x%x", chan_bitmask); + comp_err(dev, "Invalid channels mask: 0x%x", chan_bitmask); return -EINVAL; } @@ -64,7 +64,7 @@ static int copier_set_alh_multi_gtw_channel_map(struct comp_dev *parent_dev, return 0; } -static int copier_dai_init(struct comp_dev *parent_dev, +static int copier_dai_init(struct comp_dev *dev, struct comp_ipc_config *config, const struct ipc4_copier_module_cfg *copier, struct pipeline *pipeline, @@ -72,7 +72,7 @@ static int copier_dai_init(struct comp_dev *parent_dev, enum ipc4_gateway_type type, int index, int dai_count) { - struct processing_module *mod = comp_get_drvdata(parent_dev); + struct processing_module *mod = comp_get_drvdata(dev); struct copier_data *cd = module_get_private_data(mod); struct dai_data *dd; int ret; @@ -86,7 +86,7 @@ static int copier_dai_init(struct comp_dev *parent_dev, &out_valid_fmt, copier->out_fmt.s_type); config->frame_fmt = out_frame_fmt; - pipeline->sink_comp = parent_dev; + pipeline->sink_comp = dev; cd->bsource_buffer = true; } else { enum sof_ipc_frame in_frame_fmt, in_valid_fmt; @@ -96,14 +96,14 @@ static int copier_dai_init(struct comp_dev *parent_dev, &in_frame_fmt, &in_valid_fmt, copier->base.audio_fmt.s_type); config->frame_fmt = in_frame_fmt; - pipeline->source_comp = parent_dev; + pipeline->source_comp = dev; } - parent_dev->ipc_config.frame_fmt = config->frame_fmt; + dev->ipc_config.frame_fmt = config->frame_fmt; /* save the channel map and count for ALH multi-gateway */ if (type == ipc4_gtw_alh && is_multi_gateway(copier->gtw_cfg.node_id)) { - ret = copier_set_alh_multi_gtw_channel_map(parent_dev, copier, index); + ret = copier_set_alh_multi_gtw_channel_map(dev, copier, index); if (ret < 0) return ret; } @@ -112,14 +112,14 @@ static int copier_dai_init(struct comp_dev *parent_dev, if (!dd) return -ENOMEM; - ret = dai_common_new(dd, parent_dev, dai); + ret = dai_common_new(dd, dev, dai); if (ret < 0) goto free_dd; pipeline->sched_id = config->id; cd->dd[index] = dd; - ret = comp_dai_config(cd->dd[index], parent_dev, dai, copier); + ret = comp_dai_config(cd->dd[index], dev, dai, copier); if (ret < 0) goto e_zephyr_free; @@ -137,12 +137,12 @@ static int copier_dai_init(struct comp_dev *parent_dev, * ssp, dmic or alh. Sof dai component can support this case so copier * reuses dai component to support non-host gateway. */ -int copier_dai_create(struct comp_dev *parent_dev, struct copier_data *cd, +int copier_dai_create(struct comp_dev *dev, struct copier_data *cd, struct comp_ipc_config *config, const struct ipc4_copier_module_cfg *copier, struct pipeline *pipeline) { - struct processing_module *mod = comp_get_drvdata(parent_dev); + struct processing_module *mod = comp_get_drvdata(dev); int dai_index[IPC4_ALH_MAX_NUMBER_OF_GTW]; union ipc4_connector_node_id node_id; enum ipc4_gateway_type type; @@ -177,7 +177,7 @@ int copier_dai_create(struct comp_dev *parent_dev, struct copier_data *cd, ret = ipc4_find_dma_config(&dai, (uint8_t *)copier->gtw_cfg.config_data, copier->gtw_cfg.config_length * 4); if (ret != 0) { - comp_err(parent_dev, "No ssp dma_config found in blob!"); + comp_err(dev, "No ssp dma_config found in blob!"); return -EINVAL; } dai.out_fmt = &copier->out_fmt; @@ -214,14 +214,14 @@ int copier_dai_create(struct comp_dev *parent_dev, struct copier_data *cd, dai_count = alh_blob->alh_cfg.count; if (dai_count > IPC4_ALH_MAX_NUMBER_OF_GTW || dai_count < 0) { - comp_err(parent_dev, "Invalid dai_count: %d", dai_count); + comp_err(dev, "Invalid dai_count: %d", dai_count); return -EINVAL; } for (i = 0; i < dai_count; i++) dai_index[i] = IPC4_ALH_DAI_INDEX(alh_blob->alh_cfg.mapping[i].alh_id); } else { - comp_err(parent_dev, "No ipc4_alh_multi_gtw_cfg found in blob!"); + comp_err(dev, "No ipc4_alh_multi_gtw_cfg found in blob!"); return -EINVAL; } } else { @@ -237,7 +237,7 @@ int copier_dai_create(struct comp_dev *parent_dev, struct copier_data *cd, ret = ipc4_find_dma_config(&dai, (uint8_t *)copier->gtw_cfg.config_data, copier->gtw_cfg.config_length * 4); if (ret != 0) { - comp_err(parent_dev, "No dmic dma_config found in blob!"); + comp_err(dev, "No dmic dma_config found in blob!"); return -EINVAL; } dai.out_fmt = &copier->out_fmt; @@ -248,10 +248,10 @@ int copier_dai_create(struct comp_dev *parent_dev, struct copier_data *cd, for (i = 0; i < dai_count; i++) { dai.dai_index = dai_index[i]; - ret = copier_dai_init(parent_dev, config, copier, pipeline, &dai, type, i, + ret = copier_dai_init(dev, config, copier, pipeline, &dai, type, i, dai_count); if (ret) { - comp_err(parent_dev, "failed to create dai"); + comp_err(dev, "failed to create dai"); return ret; } } @@ -260,22 +260,22 @@ int copier_dai_create(struct comp_dev *parent_dev, struct copier_data *cd, get_converter_func(&copier->base.audio_fmt, &copier->out_fmt, type, IPC4_DIRECTION(dai.direction)); if (!cd->converter[IPC4_COPIER_GATEWAY_PIN]) { - comp_err(parent_dev, "failed to get converter type %d, dir %d", + comp_err(dev, "failed to get converter type %d, dir %d", type, dai.direction); return -EINVAL; } /* create multi_endpoint_buffer for ALH multi-gateway case */ if (dai_count > 1) { - ret = create_endpoint_buffer(parent_dev, cd, config, copier, type, true, 0); + ret = create_endpoint_buffer(dev, cd, config, copier, type, true, 0); if (ret < 0) return ret; } if (cd->direction == SOF_IPC_STREAM_PLAYBACK) { - pipeline->sink_comp = parent_dev; + pipeline->sink_comp = dev; } else { - pipeline->source_comp = parent_dev; + pipeline->source_comp = dev; /* set max sink count for capture */ mod->max_sinks = IPC4_COPIER_MODULE_OUTPUT_PINS_COUNT; diff --git a/src/audio/copier/copier_generic.c b/src/audio/copier/copier_generic.c index 9ffbc8102f1e..bcc10d49fd6e 100644 --- a/src/audio/copier/copier_generic.c +++ b/src/audio/copier/copier_generic.c @@ -129,7 +129,7 @@ void copier_update_params(struct copier_data *cd, struct comp_dev *dev, } } -int create_endpoint_buffer(struct comp_dev *parent_dev, +int create_endpoint_buffer(struct comp_dev *dev, struct copier_data *cd, struct comp_ipc_config *config, const struct ipc4_copier_module_cfg *copier_cfg, @@ -200,7 +200,7 @@ int create_endpoint_buffer(struct comp_dev *parent_dev, chan_map = copier_cfg->base.audio_fmt.ch_map; } - parent_dev->ipc_config.frame_fmt = config->frame_fmt; + dev->ipc_config.frame_fmt = config->frame_fmt; memset(&ipc_buf, 0, sizeof(ipc_buf)); ipc_buf.size = buf_size; diff --git a/src/audio/copier/copier_host.c b/src/audio/copier/copier_host.c index ed36419f86aa..f16826d00cb5 100644 --- a/src/audio/copier/copier_host.c +++ b/src/audio/copier/copier_host.c @@ -122,12 +122,12 @@ static int init_pipeline_reg(struct comp_dev *dev) * Sof host component can support this case so copier reuses host * component to support host gateway. */ -int copier_host_create(struct comp_dev *parent_dev, struct copier_data *cd, +int copier_host_create(struct comp_dev *dev, struct copier_data *cd, const struct ipc4_copier_module_cfg *copier_cfg, struct pipeline *pipeline) { - struct processing_module *mod = comp_get_drvdata(parent_dev); - struct comp_ipc_config *config = &parent_dev->ipc_config; + struct processing_module *mod = comp_get_drvdata(dev); + struct comp_ipc_config *config = &dev->ipc_config; struct ipc_config_host ipc_host; struct host_data *hd; int dir = cd->direction; @@ -156,9 +156,9 @@ int copier_host_create(struct comp_dev *parent_dev, struct copier_data *cd, if (!hd) return -ENOMEM; - ret = host_common_new(hd, parent_dev, &ipc_host, config->id); + ret = host_common_new(hd, dev, &ipc_host, config->id); if (ret < 0) { - comp_err(parent_dev, "copier: host new failed with exit"); + comp_err(dev, "copier: host new failed with exit"); goto e_data; } #if CONFIG_HOST_DMA_STREAM_SYNCHRONIZATION @@ -197,7 +197,7 @@ int copier_host_create(struct comp_dev *parent_dev, struct copier_data *cd, &copier_cfg->out_fmt, ipc4_gtw_host, IPC4_DIRECTION(dir)); if (!cd->converter[IPC4_COPIER_GATEWAY_PIN]) { - comp_err(parent_dev, "failed to get converter for host, dir %d", dir); + comp_err(dev, "failed to get converter for host, dir %d", dir); ret = -EINVAL; goto e_conv; } @@ -207,8 +207,8 @@ int copier_host_create(struct comp_dev *parent_dev, struct copier_data *cd, if (cd->direction == SOF_IPC_STREAM_PLAYBACK) { config->frame_fmt = in_frame_fmt; - pipeline->source_comp = parent_dev; - ret = init_pipeline_reg(parent_dev); + pipeline->source_comp = dev; + ret = init_pipeline_reg(dev); if (ret) goto e_conv; @@ -216,9 +216,9 @@ int copier_host_create(struct comp_dev *parent_dev, struct copier_data *cd, mod->max_sinks = IPC4_COPIER_MODULE_OUTPUT_PINS_COUNT; } else { config->frame_fmt = out_frame_fmt; - pipeline->sink_comp = parent_dev; + pipeline->sink_comp = dev; } - parent_dev->ipc_config.frame_fmt = config->frame_fmt; + dev->ipc_config.frame_fmt = config->frame_fmt; return 0; diff --git a/src/audio/copier/copier_ipcgtw.c b/src/audio/copier/copier_ipcgtw.c index 890da553d45b..0992bf8662e8 100644 --- a/src/audio/copier/copier_ipcgtw.c +++ b/src/audio/copier/copier_ipcgtw.c @@ -223,7 +223,7 @@ void copier_ipcgtw_reset(struct comp_dev *dev) } } -int copier_ipcgtw_create(struct comp_dev *parent_dev, struct copier_data *cd, +int copier_ipcgtw_create(struct comp_dev *dev, struct copier_data *cd, struct comp_ipc_config *config, const struct ipc4_copier_module_cfg *copier, struct pipeline *pipeline) { @@ -234,7 +234,7 @@ int copier_ipcgtw_create(struct comp_dev *parent_dev, struct copier_data *cd, gtw_cfg = &copier->gtw_cfg; if (!gtw_cfg->config_length) { - comp_err(parent_dev, "ipcgtw_create(): empty ipc4_gateway_config_data"); + comp_err(dev, "ipcgtw_create(): empty ipc4_gateway_config_data"); return -EINVAL; } @@ -246,7 +246,7 @@ int copier_ipcgtw_create(struct comp_dev *parent_dev, struct copier_data *cd, */ config->type = SOF_COMP_HOST; - ret = create_endpoint_buffer(parent_dev, cd, config, copier, ipc4_gtw_none, false, 0); + ret = create_endpoint_buffer(dev, cd, config, copier, ipc4_gtw_none, false, 0); if (ret < 0) return ret; @@ -257,7 +257,7 @@ int copier_ipcgtw_create(struct comp_dev *parent_dev, struct copier_data *cd, } ipcgtw_data->node_id = gtw_cfg->node_id; - ipcgtw_data->dev = parent_dev; + ipcgtw_data->dev = dev; blob = (const struct ipc4_ipc_gateway_config_blob *) ((const struct ipc4_gateway_config_data *)gtw_cfg->config_data)->config_blob; @@ -265,7 +265,7 @@ int copier_ipcgtw_create(struct comp_dev *parent_dev, struct copier_data *cd, /* Endpoint buffer is created in copier with size specified in copier config. That buffer * will be resized to size specified in IPC gateway blob later in ipcgtw_params(). */ - comp_dbg(parent_dev, "ipcgtw_create(): buffer_size: %u", blob->buffer_size); + comp_dbg(dev, "ipcgtw_create(): buffer_size: %u", blob->buffer_size); ipcgtw_data->buf_size = blob->buffer_size; cd->converter[IPC4_COPIER_GATEWAY_PIN] = @@ -273,24 +273,24 @@ int copier_ipcgtw_create(struct comp_dev *parent_dev, struct copier_data *cd, &copier->out_fmt, ipc4_gtw_host, IPC4_DIRECTION(cd->direction)); if (!cd->converter[IPC4_COPIER_GATEWAY_PIN]) { - comp_err(parent_dev, "failed to get converter for IPC gateway, dir %d", + comp_err(dev, "failed to get converter for IPC gateway, dir %d", cd->direction); ret = -EINVAL; goto e_ipcgtw; } if (cd->direction == SOF_IPC_STREAM_PLAYBACK) { - comp_buffer_connect(parent_dev, config->core, + comp_buffer_connect(dev, config->core, cd->endpoint_buffer[cd->endpoint_num], PPL_CONN_DIR_COMP_TO_BUFFER); cd->bsource_buffer = false; - pipeline->source_comp = parent_dev; + pipeline->source_comp = dev; } else { - comp_buffer_connect(parent_dev, config->core, + comp_buffer_connect(dev, config->core, cd->endpoint_buffer[cd->endpoint_num], PPL_CONN_DIR_BUFFER_TO_COMP); cd->bsource_buffer = true; - pipeline->sink_comp = parent_dev; + pipeline->sink_comp = dev; } list_item_append(&ipcgtw_data->item, &ipcgtw_list_head); diff --git a/src/include/ipc4/copier.h b/src/include/ipc4/copier.h index b91b58172086..9e2820be9593 100644 --- a/src/include/ipc4/copier.h +++ b/src/include/ipc4/copier.h @@ -280,7 +280,7 @@ pcm_converter_func get_converter_func(const struct ipc4_audio_format *in_fmt, enum ipc4_direction_type dir); struct comp_ipc_config; -int create_endpoint_buffer(struct comp_dev *parent_dev, +int create_endpoint_buffer(struct comp_dev *dev, struct copier_data *cd, struct comp_ipc_config *config, const struct ipc4_copier_module_cfg *copier_cfg, diff --git a/src/include/sof/audio/dai_copier.h b/src/include/sof/audio/dai_copier.h index 839e3b61f871..a0566ce76567 100644 --- a/src/include/sof/audio/dai_copier.h +++ b/src/include/sof/audio/dai_copier.h @@ -57,7 +57,7 @@ int dai_zephyr_unbind(struct dai_data *dd, struct comp_dev *dev, void *data); struct ipc4_copier_module_cfg; struct copier_data; -int copier_dai_create(struct comp_dev *parent_dev, struct copier_data *cd, +int copier_dai_create(struct comp_dev *dev, struct copier_data *cd, struct comp_ipc_config *config, const struct ipc4_copier_module_cfg *copier, struct pipeline *pipeline); diff --git a/src/include/sof/audio/host_copier.h b/src/include/sof/audio/host_copier.h index 8dee71b33332..20cb760e4b79 100644 --- a/src/include/sof/audio/host_copier.h +++ b/src/include/sof/audio/host_copier.h @@ -115,7 +115,7 @@ int host_common_params(struct host_data *hd, struct comp_dev *dev, int host_common_copy(struct host_data *hd, struct comp_dev *dev, copy_callback_t cb); void host_common_update(struct host_data *hd, struct comp_dev *dev, uint32_t bytes); void host_common_one_shot(struct host_data *hd, uint32_t bytes); -int copier_host_create(struct comp_dev *parent_dev, struct copier_data *cd, +int copier_host_create(struct comp_dev *dev, struct copier_data *cd, const struct ipc4_copier_module_cfg *copier_cfg, struct pipeline *pipeline); void copier_host_free(struct copier_data *cd); diff --git a/src/include/sof/audio/ipcgtw_copier.h b/src/include/sof/audio/ipcgtw_copier.h index 84c0d7384211..c67bbd37232b 100644 --- a/src/include/sof/audio/ipcgtw_copier.h +++ b/src/include/sof/audio/ipcgtw_copier.h @@ -100,7 +100,7 @@ int copier_ipcgtw_params(struct ipcgtw_data *ipcgtw_data, struct comp_dev *dev, void copier_ipcgtw_reset(struct comp_dev *dev); -int copier_ipcgtw_create(struct comp_dev *parent_dev, struct copier_data *cd, +int copier_ipcgtw_create(struct comp_dev *dev, struct copier_data *cd, struct comp_ipc_config *config, const struct ipc4_copier_module_cfg *copier, struct pipeline *pipeline); From 6cda26cb2d2493f1ebc096f49fd7d77b73c0839b Mon Sep 17 00:00:00 2001 From: Baofeng Tian Date: Thu, 3 Aug 2023 10:41:07 +0800 Subject: [PATCH 05/14] copier-host: remove duplicated frame format assignment since there is only one dev, there is no need to do duplicated frame format assignment. Signed-off-by: Baofeng Tian --- src/audio/copier/copier_host.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/audio/copier/copier_host.c b/src/audio/copier/copier_host.c index f16826d00cb5..4ac8650f4a53 100644 --- a/src/audio/copier/copier_host.c +++ b/src/audio/copier/copier_host.c @@ -218,7 +218,6 @@ int copier_host_create(struct comp_dev *dev, struct copier_data *cd, config->frame_fmt = out_frame_fmt; pipeline->sink_comp = dev; } - dev->ipc_config.frame_fmt = config->frame_fmt; return 0; From a4af68a8dff593863c767962e9a9f8548e33006a Mon Sep 17 00:00:00 2001 From: Baofeng Tian Date: Wed, 12 Jul 2023 09:37:20 +0800 Subject: [PATCH 06/14] copier: refine dai init code refine dai init code with reduce one more parameter. Signed-off-by: Baofeng Tian --- src/audio/copier/copier.c | 3 +-- src/audio/copier/copier_dai.c | 2 +- src/include/sof/audio/dai_copier.h | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/audio/copier/copier.c b/src/audio/copier/copier.c index 6f7705d90d20..dcb95fb71634 100644 --- a/src/audio/copier/copier.c +++ b/src/audio/copier/copier.c @@ -114,8 +114,7 @@ static int copier_init(struct processing_module *mod) case ipc4_i2s_link_input_class: case ipc4_alh_link_output_class: case ipc4_alh_link_input_class: - ret = copier_dai_create(dev, cd, &dev->ipc_config, - copier, ipc_pipe->pipeline); + ret = copier_dai_create(dev, cd, copier, ipc_pipe->pipeline); if (ret < 0) { comp_err(dev, "unable to create dai"); goto error; diff --git a/src/audio/copier/copier_dai.c b/src/audio/copier/copier_dai.c index 71faa939a6aa..46d8ce7389b3 100644 --- a/src/audio/copier/copier_dai.c +++ b/src/audio/copier/copier_dai.c @@ -138,11 +138,11 @@ static int copier_dai_init(struct comp_dev *dev, * reuses dai component to support non-host gateway. */ int copier_dai_create(struct comp_dev *dev, struct copier_data *cd, - struct comp_ipc_config *config, const struct ipc4_copier_module_cfg *copier, struct pipeline *pipeline) { struct processing_module *mod = comp_get_drvdata(dev); + struct comp_ipc_config *config = &dev->ipc_config; int dai_index[IPC4_ALH_MAX_NUMBER_OF_GTW]; union ipc4_connector_node_id node_id; enum ipc4_gateway_type type; diff --git a/src/include/sof/audio/dai_copier.h b/src/include/sof/audio/dai_copier.h index a0566ce76567..6219b92fb5b7 100644 --- a/src/include/sof/audio/dai_copier.h +++ b/src/include/sof/audio/dai_copier.h @@ -58,7 +58,6 @@ int dai_zephyr_unbind(struct dai_data *dd, struct comp_dev *dev, void *data); struct ipc4_copier_module_cfg; struct copier_data; int copier_dai_create(struct comp_dev *dev, struct copier_data *cd, - struct comp_ipc_config *config, const struct ipc4_copier_module_cfg *copier, struct pipeline *pipeline); From 8515f772e1f0c9ca43be8176b25df44ebe4f813c Mon Sep 17 00:00:00 2001 From: Baofeng Tian Date: Thu, 3 Aug 2023 10:45:28 +0800 Subject: [PATCH 07/14] copier-dai: remove duplicated frame format assignment After dai device was removed, there is no parent device and dai device classification, only one device left for copier. The input ipc config is exactly copier device config, no need extra assignment. Signed-off-by: Baofeng Tian --- src/audio/copier/copier_dai.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/audio/copier/copier_dai.c b/src/audio/copier/copier_dai.c index 46d8ce7389b3..41ce4093ed88 100644 --- a/src/audio/copier/copier_dai.c +++ b/src/audio/copier/copier_dai.c @@ -99,8 +99,6 @@ static int copier_dai_init(struct comp_dev *dev, pipeline->source_comp = dev; } - dev->ipc_config.frame_fmt = config->frame_fmt; - /* save the channel map and count for ALH multi-gateway */ if (type == ipc4_gtw_alh && is_multi_gateway(copier->gtw_cfg.node_id)) { ret = copier_set_alh_multi_gtw_channel_map(dev, copier, index); From 39805a9fccbab79d6424f7a5d340418157abefb4 Mon Sep 17 00:00:00 2001 From: Baofeng Tian Date: Wed, 12 Jul 2023 11:13:45 +0800 Subject: [PATCH 08/14] aria: simplify aria parameter update Use function to simplify buffer parameter update instead of update one by one. Signed-off-by: Baofeng Tian --- src/audio/aria/aria.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/src/audio/aria/aria.c b/src/audio/aria/aria.c index 7599c6c41383..9d9c16c9c1d9 100644 --- a/src/audio/aria/aria.c +++ b/src/audio/aria/aria.c @@ -154,23 +154,11 @@ static void aria_set_stream_params(struct comp_buffer *buffer, struct processing_module *mod) { struct comp_buffer __sparse_cache *buffer_c; - enum sof_ipc_frame valid_fmt, frame_fmt; const struct ipc4_audio_format *audio_fmt = &mod->priv.cfg.base_cfg.audio_fmt; - struct aria_data *cd = module_get_private_data(mod); buffer_c = buffer_acquire(buffer); - audio_stream_fmt_conversion(audio_fmt->depth, - audio_fmt->valid_bit_depth, - &frame_fmt, &valid_fmt, - audio_fmt->s_type); - audio_stream_set_buffer_fmt(&buffer_c->stream, - audio_fmt->interleaving_style); - audio_stream_set_frm_fmt(&buffer_c->stream, frame_fmt); - audio_stream_set_valid_fmt(&buffer_c->stream, valid_fmt); - audio_stream_set_channels(&buffer_c->stream, cd->chan_cnt); - audio_stream_set_rate(&buffer_c->stream, audio_fmt->sampling_frequency); - + ipc4_update_buffer_format(buffer_c, audio_fmt); #ifdef ARIA_GENERIC audio_stream_init_alignment_constants(1, 1, &buffer_c->stream); #else From 5a38cb5dff889af2b4dcdebaced600297c4bba4a Mon Sep 17 00:00:00 2001 From: Baofeng Tian Date: Wed, 12 Jul 2023 13:54:27 +0800 Subject: [PATCH 09/14] google-rtc: simplify google-rtc parameters use helper function to update stream parameters for sink buffers. Signed-off-by: Baofeng Tian --- src/audio/google/google_rtc_audio_processing.c | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/audio/google/google_rtc_audio_processing.c b/src/audio/google/google_rtc_audio_processing.c index 5c54acd00f95..513f8dbb3334 100644 --- a/src/audio/google/google_rtc_audio_processing.c +++ b/src/audio/google/google_rtc_audio_processing.c @@ -109,22 +109,7 @@ static int google_rtc_audio_processing_params( sink = list_first_item(&dev->bsink_list, struct comp_buffer, source_list); sink_c = buffer_acquire(sink); - - audio_stream_fmt_conversion(out_fmt->depth, - out_fmt->valid_bit_depth, - &frame_fmt, &valid_fmt, - out_fmt->s_type); - - audio_stream_set_frm_fmt(&sink_c->stream, frame_fmt); - audio_stream_set_valid_fmt(&sink_c->stream, valid_fmt); - audio_stream_set_channels(&sink_c->stream, cd->config.output_fmt.channels_count); - audio_stream_set_rate(&sink_c->stream, cd->config.output_fmt.sampling_frequency); - - sink_c->buffer_fmt = out_fmt->interleaving_style; - params->frame_fmt = valid_fmt; - - sink_c->hw_params_configured = true; - + ipc4_update_buffer_format(sink_c, out_fmt); buffer_release(sink_c); } #endif From 1ce4a401b088993c169726911069b0e9b8c1a400 Mon Sep 17 00:00:00 2001 From: Baofeng Tian Date: Wed, 12 Jul 2023 15:55:57 +0800 Subject: [PATCH 10/14] mux: simplify set mux parameters use helper function to update stream parameters for mux buffers. Signed-off-by: Baofeng Tian --- src/audio/mux/mux.c | 70 ++++++--------------------------------------- 1 file changed, 9 insertions(+), 61 deletions(-) diff --git a/src/audio/mux/mux.c b/src/audio/mux/mux.c index 3c877f5be57f..bfecf972e298 100644 --- a/src/audio/mux/mux.c +++ b/src/audio/mux/mux.c @@ -275,9 +275,8 @@ static void set_mux_params(struct processing_module *mod) struct comp_dev *dev = mod->dev; struct comp_buffer *sink, *source; struct comp_buffer __sparse_cache *sink_c, *source_c; - enum sof_ipc_frame frame_fmt, valid_fmt; struct list_item *source_list; - int i, j, valid_bit_depth; + int j, valid_bit_depth; const uint32_t byte_align = 1; const uint32_t frame_align_req = 1; @@ -304,32 +303,16 @@ static void set_mux_params(struct processing_module *mod) &sink_c->stream); if (!sink_c->hw_params_configured) { - struct ipc4_audio_format out_fmt; - - out_fmt = cd->md.output_format; - audio_stream_fmt_conversion(out_fmt.depth, - out_fmt.valid_bit_depth, - &frame_fmt, &valid_fmt, - out_fmt.s_type); - - audio_stream_set_frm_fmt(&sink_c->stream, frame_fmt); - audio_stream_set_valid_fmt(&sink_c->stream, valid_fmt); - audio_stream_set_channels(&sink_c->stream, out_fmt.channels_count); - audio_stream_set_rate(&sink_c->stream, out_fmt.sampling_frequency); - - audio_stream_set_buffer_fmt(&sink_c->stream, out_fmt.interleaving_style); + ipc4_update_buffer_format(sink_c, &cd->md.output_format); params->frame_fmt = audio_stream_get_frm_fmt(&sink_c->stream); - - for (i = 0; i < SOF_IPC_MAX_CHANNELS; i++) - sink_c->chmap[i] = (out_fmt.ch_map >> i * 4) & 0xf; - - sink_c->hw_params_configured = true; } buffer_release(sink_c); } /* update each source format */ if (!list_is_empty(&dev->bsource_list)) { + struct ipc4_audio_format *audio_fmt; + list_for_item(source_list, &dev->bsource_list) { source = container_of(source_list, struct comp_buffer, sink_list); @@ -339,47 +322,12 @@ static void set_mux_params(struct processing_module *mod) j = source_c->id; cd->config.streams[j].pipeline_id = source_c->pipeline_id; valid_bit_depth = cd->md.base_cfg.audio_fmt.valid_bit_depth; - if (j == BASE_CFG_QUEUED_ID) { - audio_stream_set_channels(&source_c->stream, - cd->md.base_cfg.audio_fmt.channels_count); - audio_stream_set_rate(&source_c->stream, - cd->md.base_cfg.audio_fmt.sampling_frequency); - audio_stream_fmt_conversion(cd->md.base_cfg.audio_fmt.depth, - valid_bit_depth, - &frame_fmt, &valid_fmt, - cd->md.base_cfg.audio_fmt.s_type); - - audio_stream_set_buffer_fmt - (&source_c->stream, - cd->md.base_cfg.audio_fmt.interleaving_style); - - for (i = 0; i < SOF_IPC_MAX_CHANNELS; i++) - source_c->chmap[i] = - (cd->md.base_cfg.audio_fmt.ch_map >> i * 4) & 0xf; - } else { - /* set parameters for reference input channels */ - audio_stream_set_channels(&source_c->stream, - cd->md.reference_format.channels_count); - audio_stream_set_rate(&source_c->stream, - cd->md.reference_format.sampling_frequency); - audio_stream_fmt_conversion(cd->md.reference_format.depth, - cd->md.reference_format.valid_bit_depth, - &frame_fmt, &valid_fmt, - cd->md.reference_format.s_type); - - audio_stream_set_buffer_fmt - (&source_c->stream, - cd->md.reference_format.interleaving_style); - - for (i = 0; i < SOF_IPC_MAX_CHANNELS; i++) - source_c->chmap[i] = - (cd->md.reference_format.ch_map >> i * 4) & 0xf; - } - - audio_stream_set_frm_fmt(&source_c->stream, frame_fmt); - audio_stream_set_valid_fmt(&source_c->stream, valid_fmt); + if (j == BASE_CFG_QUEUED_ID) + audio_fmt = &cd->md.base_cfg.audio_fmt; + else + audio_fmt = &cd->md.reference_format; - source_c->hw_params_configured = true; + ipc4_update_buffer_format(source_c, audio_fmt); buffer_release(source_c); } } From 2130f8654b3ab4c5e0ae75dd36ee62c3f4e4ff23 Mon Sep 17 00:00:00 2001 From: Baofeng Tian Date: Wed, 12 Jul 2023 16:11:44 +0800 Subject: [PATCH 11/14] selector: simplify selector parameters use helper function to update stream parameters selector buffers. Signed-off-by: Baofeng Tian --- src/audio/selector/selector.c | 39 +++-------------------------------- 1 file changed, 3 insertions(+), 36 deletions(-) diff --git a/src/audio/selector/selector.c b/src/audio/selector/selector.c index 5ac8dfca56f6..8a39db81b2ef 100644 --- a/src/audio/selector/selector.c +++ b/src/audio/selector/selector.c @@ -701,24 +701,10 @@ static void set_selector_params(struct processing_module *mod, struct comp_buffer *sink_buf = container_of(sink_list, struct comp_buffer, source_list); struct comp_buffer __sparse_cache *sink = buffer_acquire(sink_buf); - enum sof_ipc_frame frame_fmt, valid_fmt; - audio_stream_fmt_conversion(out_fmt->depth, - out_fmt->valid_bit_depth, - &frame_fmt, &valid_fmt, - out_fmt->s_type); - - audio_stream_set_frm_fmt(&sink->stream, frame_fmt); - audio_stream_set_valid_fmt(&sink->stream, valid_fmt); + ipc4_update_buffer_format(sink, out_fmt); audio_stream_set_channels(&sink->stream, params->channels); audio_stream_set_rate(&sink->stream, params->rate); - - audio_stream_set_buffer_fmt(&sink->stream, out_fmt->interleaving_style); - - for (i = 0; i < SOF_IPC_MAX_CHANNELS; i++) - sink->chmap[i] = (out_fmt->ch_map >> i * 4) & 0xf; - - sink->hw_params_configured = true; buffer_release(sink); } @@ -730,28 +716,9 @@ static void set_selector_params(struct processing_module *mod, */ src_buf = list_first_item(&dev->bsource_list, struct comp_buffer, sink_list); source = buffer_acquire(src_buf); - if (!source->hw_params_configured) { - struct ipc4_audio_format *in_fmt; - enum sof_ipc_frame frame_fmt, valid_fmt; - - in_fmt = &mod->priv.cfg.base_cfg.audio_fmt; - audio_stream_fmt_conversion(in_fmt->depth, - in_fmt->valid_bit_depth, - &frame_fmt, &valid_fmt, - in_fmt->s_type); - audio_stream_set_frm_fmt(&source->stream, frame_fmt); - audio_stream_set_valid_fmt(&source->stream, valid_fmt); - audio_stream_set_channels(&source->stream, in_fmt->channels_count); - audio_stream_set_rate(&source->stream, in_fmt->sampling_frequency); - - audio_stream_set_buffer_fmt(&source->stream, in_fmt->interleaving_style); - - for (i = 0; i < SOF_IPC_MAX_CHANNELS; i++) - source->chmap[i] = (in_fmt->ch_map >> i * 4) & 0xf; - - source->hw_params_configured = true; - } + if (!source->hw_params_configured) + ipc4_update_buffer_format(source, &mod->priv.cfg.base_cfg.audio_fmt); buffer_release(source); } From 4735864abebb96fad4669a8661fa4e22c9875ac5 Mon Sep 17 00:00:00 2001 From: Baofeng Tian Date: Wed, 12 Jul 2023 16:22:27 +0800 Subject: [PATCH 12/14] smart_amp: simplify smart amp parameters use helper function to update stream parameters. Signed-off-by: Baofeng Tian --- src/samples/audio/smart_amp_test_ipc4.c | 26 ++----------------------- 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/src/samples/audio/smart_amp_test_ipc4.c b/src/samples/audio/smart_amp_test_ipc4.c index 658c175c3fb4..a256de9c3d28 100644 --- a/src/samples/audio/smart_amp_test_ipc4.c +++ b/src/samples/audio/smart_amp_test_ipc4.c @@ -88,25 +88,13 @@ static int smart_amp_init(struct processing_module *mod) static void smart_amp_set_params(struct processing_module *mod) { - const struct ipc4_audio_format *audio_fmt = &mod->priv.cfg.base_cfg.audio_fmt; struct sof_ipc_stream_params *params = mod->stream_params; struct comp_dev *dev = mod->dev; struct smart_amp_data *sad = module_get_private_data(mod); struct comp_buffer *sink; struct comp_buffer __sparse_cache *sink_c; - enum sof_ipc_frame frame_fmt, valid_fmt; - int i; - - memset(params, 0, sizeof(*params)); - params->channels = audio_fmt->channels_count; - params->rate = audio_fmt->sampling_frequency; - params->sample_container_bytes = audio_fmt->depth / 8; - params->sample_valid_bytes = audio_fmt->valid_bit_depth / 8; - params->buffer_fmt = audio_fmt->interleaving_style; - params->buffer.size = mod->priv.cfg.base_cfg.ibs; - for (i = 0; i < SOF_IPC_MAX_CHANNELS; i++) - params->chmap[i] = (audio_fmt->ch_map >> i * 4) & 0xf; + ipc4_base_module_cfg_to_stream_params(&mod->priv.cfg.base_cfg, params); /* update sink format */ if (!list_is_empty(&dev->bsink_list)) { @@ -116,18 +104,8 @@ static void smart_amp_set_params(struct processing_module *mod) sink = list_first_item(&dev->bsink_list, struct comp_buffer, source_list); sink_c = buffer_acquire(sink); - audio_stream_fmt_conversion(out_fmt.depth, - out_fmt.valid_bit_depth, - &frame_fmt, &valid_fmt, - out_fmt.s_type); - - audio_stream_set_frm_fmt(&sink_c->stream, frame_fmt); - audio_stream_set_valid_fmt(&sink_c->stream, valid_fmt); - audio_stream_set_channels(&sink_c->stream, out_fmt.channels_count); - audio_stream_set_rate(&sink_c->stream, out_fmt.sampling_frequency); - audio_stream_set_buffer_fmt(&sink_c->stream, out_fmt.interleaving_style); + ipc4_update_buffer_format(sink_c, &out_fmt); params->frame_fmt = audio_stream_get_frm_fmt(&sink_c->stream); - sink_c->hw_params_configured = true; buffer_release(sink_c); } } From 84c52b4e41ce4f3a31ab85086e20822253f54dce Mon Sep 17 00:00:00 2001 From: Baofeng Tian Date: Tue, 18 Jul 2023 14:20:53 +0800 Subject: [PATCH 13/14] copier:simplify ipcgtw create parameters remove duplicate parameters and make function parameters looks more simple. Signed-off-by: Baofeng Tian --- src/audio/copier/copier.c | 3 +-- src/audio/copier/copier_ipcgtw.c | 2 +- src/include/sof/audio/ipcgtw_copier.h | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/audio/copier/copier.c b/src/audio/copier/copier.c index dcb95fb71634..ae03226be8c1 100644 --- a/src/audio/copier/copier.c +++ b/src/audio/copier/copier.c @@ -123,8 +123,7 @@ static int copier_init(struct processing_module *mod) #if CONFIG_IPC4_GATEWAY case ipc4_ipc_output_class: case ipc4_ipc_input_class: - ret = copier_ipcgtw_create(dev, cd, &dev->ipc_config, - copier, ipc_pipe->pipeline); + ret = copier_ipcgtw_create(dev, cd, copier, ipc_pipe->pipeline); if (ret < 0) { comp_err(dev, "unable to create IPC gateway"); goto error; diff --git a/src/audio/copier/copier_ipcgtw.c b/src/audio/copier/copier_ipcgtw.c index 0992bf8662e8..0b63fe9cce56 100644 --- a/src/audio/copier/copier_ipcgtw.c +++ b/src/audio/copier/copier_ipcgtw.c @@ -224,9 +224,9 @@ void copier_ipcgtw_reset(struct comp_dev *dev) } int copier_ipcgtw_create(struct comp_dev *dev, struct copier_data *cd, - struct comp_ipc_config *config, const struct ipc4_copier_module_cfg *copier, struct pipeline *pipeline) { + struct comp_ipc_config *config = &dev->ipc_config; struct ipcgtw_data *ipcgtw_data; const struct ipc4_copier_gateway_cfg *gtw_cfg; const struct ipc4_ipc_gateway_config_blob *blob; diff --git a/src/include/sof/audio/ipcgtw_copier.h b/src/include/sof/audio/ipcgtw_copier.h index c67bbd37232b..6a52e25e61e8 100644 --- a/src/include/sof/audio/ipcgtw_copier.h +++ b/src/include/sof/audio/ipcgtw_copier.h @@ -101,7 +101,6 @@ int copier_ipcgtw_params(struct ipcgtw_data *ipcgtw_data, struct comp_dev *dev, void copier_ipcgtw_reset(struct comp_dev *dev); int copier_ipcgtw_create(struct comp_dev *dev, struct copier_data *cd, - struct comp_ipc_config *config, const struct ipc4_copier_module_cfg *copier, struct pipeline *pipeline); void copier_ipcgtw_free(struct copier_data *cd); From 2d1f53aaeb43f23c437fadaf04226e9951afa5a3 Mon Sep 17 00:00:00 2001 From: Baofeng Tian Date: Tue, 18 Jul 2023 14:30:21 +0800 Subject: [PATCH 14/14] copier: remove redundant parameters when create endpoint buffer Remove no use or redundant parameters in create endpoint buffer function. Signed-off-by: Baofeng Tian --- src/audio/copier/copier_dai.c | 2 +- src/audio/copier/copier_generic.c | 6 ++---- src/audio/copier/copier_ipcgtw.c | 2 +- src/include/ipc4/copier.h | 5 +---- 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/audio/copier/copier_dai.c b/src/audio/copier/copier_dai.c index 41ce4093ed88..31b832b81d01 100644 --- a/src/audio/copier/copier_dai.c +++ b/src/audio/copier/copier_dai.c @@ -265,7 +265,7 @@ int copier_dai_create(struct comp_dev *dev, struct copier_data *cd, /* create multi_endpoint_buffer for ALH multi-gateway case */ if (dai_count > 1) { - ret = create_endpoint_buffer(dev, cd, config, copier, type, true, 0); + ret = create_endpoint_buffer(dev, cd, copier, true); if (ret < 0) return ret; } diff --git a/src/audio/copier/copier_generic.c b/src/audio/copier/copier_generic.c index bcc10d49fd6e..e9ca748a8b2e 100644 --- a/src/audio/copier/copier_generic.c +++ b/src/audio/copier/copier_generic.c @@ -131,12 +131,10 @@ void copier_update_params(struct copier_data *cd, struct comp_dev *dev, int create_endpoint_buffer(struct comp_dev *dev, struct copier_data *cd, - struct comp_ipc_config *config, const struct ipc4_copier_module_cfg *copier_cfg, - enum ipc4_gateway_type type, - bool create_multi_endpoint_buffer, - int index) + bool create_multi_endpoint_buffer) { + struct comp_ipc_config *config = &dev->ipc_config; enum sof_ipc_frame in_frame_fmt, out_frame_fmt; enum sof_ipc_frame in_valid_fmt, out_valid_fmt; enum sof_ipc_frame valid_fmt; diff --git a/src/audio/copier/copier_ipcgtw.c b/src/audio/copier/copier_ipcgtw.c index 0b63fe9cce56..967467f098ad 100644 --- a/src/audio/copier/copier_ipcgtw.c +++ b/src/audio/copier/copier_ipcgtw.c @@ -246,7 +246,7 @@ int copier_ipcgtw_create(struct comp_dev *dev, struct copier_data *cd, */ config->type = SOF_COMP_HOST; - ret = create_endpoint_buffer(dev, cd, config, copier, ipc4_gtw_none, false, 0); + ret = create_endpoint_buffer(dev, cd, copier, false); if (ret < 0) return ret; diff --git a/src/include/ipc4/copier.h b/src/include/ipc4/copier.h index 9e2820be9593..285b6ca3f4d4 100644 --- a/src/include/ipc4/copier.h +++ b/src/include/ipc4/copier.h @@ -282,11 +282,8 @@ pcm_converter_func get_converter_func(const struct ipc4_audio_format *in_fmt, struct comp_ipc_config; int create_endpoint_buffer(struct comp_dev *dev, struct copier_data *cd, - struct comp_ipc_config *config, const struct ipc4_copier_module_cfg *copier_cfg, - enum ipc4_gateway_type type, - bool create_multi_endpoint_buffer, - int index); + bool create_multi_endpoint_buffer); enum sof_ipc_stream_direction get_gateway_direction(enum ipc4_connector_node_id_type node_id_type);