Commit c1c03888 authored by Jaska Uimonen's avatar Jaska Uimonen Committed by Mark Brown

ASoC: SOF: parse multiple SSP DAI and hw configs

ASoC parses multiple hw_configs defined in topology. However currently
in SOF only the first config is used and others are discarded. First
change SOF driver to parse and save possible multiple configs in ssp
case. Also save the default config value provided by ASoC. Functionality
with only one defined config stays the same.
Signed-off-by: default avatarJaska Uimonen <jaska.uimonen@linux.intel.com>
Reviewed-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: default avatarGuennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Signed-off-by: default avatarKai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://lore.kernel.org/r/20210326165150.255533-1-kai.vehmanen@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 502e5321
...@@ -673,10 +673,10 @@ int sof_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_pa ...@@ -673,10 +673,10 @@ int sof_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_pa
/* read rate and channels from topology */ /* read rate and channels from topology */
switch (dai->dai_config->type) { switch (dai->dai_config->type) {
case SOF_DAI_INTEL_SSP: case SOF_DAI_INTEL_SSP:
rate->min = dai->dai_config->ssp.fsync_rate; rate->min = dai->dai_config[dai->current_config].ssp.fsync_rate;
rate->max = dai->dai_config->ssp.fsync_rate; rate->max = dai->dai_config[dai->current_config].ssp.fsync_rate;
channels->min = dai->dai_config->ssp.tdm_slots; channels->min = dai->dai_config[dai->current_config].ssp.tdm_slots;
channels->max = dai->dai_config->ssp.tdm_slots; channels->max = dai->dai_config[dai->current_config].ssp.tdm_slots;
dev_dbg(component->dev, dev_dbg(component->dev,
"rate_min: %d rate_max: %d\n", rate->min, rate->max); "rate_min: %d rate_max: %d\n", rate->min, rate->max);
......
...@@ -112,6 +112,8 @@ struct snd_sof_dai { ...@@ -112,6 +112,8 @@ struct snd_sof_dai {
const char *cpu_dai_name; const char *cpu_dai_name;
struct sof_ipc_comp_dai comp_dai; struct sof_ipc_comp_dai comp_dai;
int number_configs;
int current_config;
struct sof_ipc_dai_config *dai_config; struct sof_ipc_dai_config *dai_config;
struct list_head list; /* list in sdev dai list */ struct list_head list; /* list in sdev dai list */
}; };
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment