Skip to content

Commit

Permalink
dai-zephyr: pass full copier gateway config to dai_set_config()
Browse files Browse the repository at this point in the history
Pass the full ipc4_copier_gateway_cfg structure as spec_config parameter
in call to dai_set_config() instead of its config_data[] sub-field. This
adds the ability for some DAI drivers to access gateway config fields
other than config_data (e.g. config_length).

Signed-off-by: Tomasz Lissowski <[email protected]>
  • Loading branch information
tlissows committed Jul 19, 2024
1 parent 1470e6c commit 2135e23
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 5 deletions.
9 changes: 5 additions & 4 deletions src/audio/dai-zephyr.c
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ int dai_set_config(struct dai *dai, struct ipc_config_dai *common_config,
{
const struct device *dev = dai->dev;
const struct sof_ipc_dai_config *sof_cfg = spec_config;
const struct ipc4_copier_gateway_cfg *gtw_cfg = spec_config;
struct dai_config cfg;
const void *cfg_params;
bool is_blob;
Expand All @@ -151,23 +152,23 @@ int dai_set_config(struct dai *dai, struct ipc_config_dai *common_config,
switch (common_config->type) {
case SOF_DAI_INTEL_SSP:
cfg.type = is_blob ? DAI_INTEL_SSP_NHLT : DAI_INTEL_SSP;
cfg_params = is_blob ? spec_config : &sof_cfg->ssp;
cfg_params = is_blob ? (void *)&gtw_cfg->config_data : &sof_cfg->ssp;
dai_set_link_hda_config(&cfg.link_config,
common_config, cfg_params);
break;
case SOF_DAI_INTEL_ALH:
cfg.type = is_blob ? DAI_INTEL_ALH_NHLT : DAI_INTEL_ALH;
cfg_params = is_blob ? spec_config : &sof_cfg->alh;
cfg_params = is_blob ? (void *)&gtw_cfg->config_data : &sof_cfg->alh;
break;
case SOF_DAI_INTEL_DMIC:
cfg.type = is_blob ? DAI_INTEL_DMIC_NHLT : DAI_INTEL_DMIC;
cfg_params = is_blob ? spec_config : &sof_cfg->dmic;
cfg_params = is_blob ? (void *)&gtw_cfg->config_data : &sof_cfg->dmic;
dai_set_link_hda_config(&cfg.link_config,
common_config, cfg_params);
break;
case SOF_DAI_INTEL_HDA:
cfg.type = is_blob ? DAI_INTEL_HDA_NHLT : DAI_INTEL_HDA;
cfg_params = is_blob ? spec_config : &sof_cfg->hda;
cfg_params = is_blob ? (void *)&gtw_cfg->config_data : &sof_cfg->hda;
break;
case SOF_DAI_IMX_SAI:
cfg.type = DAI_IMX_SAI;
Expand Down
2 changes: 1 addition & 1 deletion src/ipc/ipc4/dai.c
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ int dai_config(struct dai_data *dd, struct comp_dev *dev, struct ipc_config_dai
if (ret < 0)
return ret;

return dai_set_config(dd->dai, common_config, copier_cfg->gtw_cfg.config_data);
return dai_set_config(dd->dai, common_config, &copier_cfg->gtw_cfg);
}

#if CONFIG_ZEPHYR_NATIVE_DRIVERS
Expand Down

0 comments on commit 2135e23

Please sign in to comment.