Commit 2855e16f authored by Mark Brown's avatar Mark Brown

ASoC: Intel: set dpcm_capture for amps

Merge series from Kai Vehmanen <kai.vehmanen@linux.intel.com>:

This series addresses problems with echo reference devices
reported in:
"[BUG][ADL-N] Kernel panic when echo reference stream is opened"
https://github.com/thesofproject/linux/issues/4083
parents 54650eb1 b3c00316
...@@ -336,6 +336,9 @@ static int create_spk_amp_dai_links(struct device *dev, ...@@ -336,6 +336,9 @@ static int create_spk_amp_dai_links(struct device *dev,
links[*id].platforms = platform_component; links[*id].platforms = platform_component;
links[*id].num_platforms = ARRAY_SIZE(platform_component); links[*id].num_platforms = ARRAY_SIZE(platform_component);
links[*id].dpcm_playback = 1; links[*id].dpcm_playback = 1;
/* firmware-generated echo reference */
links[*id].dpcm_capture = 1;
links[*id].no_pcm = 1; links[*id].no_pcm = 1;
links[*id].cpus = &cpus[*id]; links[*id].cpus = &cpus[*id];
links[*id].num_cpus = 1; links[*id].num_cpus = 1;
......
...@@ -487,8 +487,6 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev, ...@@ -487,8 +487,6 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
links[id].num_codecs = ARRAY_SIZE(max_98373_components); links[id].num_codecs = ARRAY_SIZE(max_98373_components);
links[id].init = max_98373_spk_codec_init; links[id].init = max_98373_spk_codec_init;
links[id].ops = &max_98373_ops; links[id].ops = &max_98373_ops;
/* feedback stream */
links[id].dpcm_capture = 1;
} else if (sof_nau8825_quirk & } else if (sof_nau8825_quirk &
SOF_MAX98360A_SPEAKER_AMP_PRESENT) { SOF_MAX98360A_SPEAKER_AMP_PRESENT) {
max_98360a_dai_link(&links[id]); max_98360a_dai_link(&links[id]);
...@@ -506,6 +504,9 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev, ...@@ -506,6 +504,9 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
links[id].platforms = platform_component; links[id].platforms = platform_component;
links[id].num_platforms = ARRAY_SIZE(platform_component); links[id].num_platforms = ARRAY_SIZE(platform_component);
links[id].dpcm_playback = 1; links[id].dpcm_playback = 1;
/* feedback stream or firmware-generated echo reference */
links[id].dpcm_capture = 1;
links[id].no_pcm = 1; links[id].no_pcm = 1;
links[id].cpus = &cpus[id]; links[id].cpus = &cpus[id];
links[id].num_cpus = 1; links[id].num_cpus = 1;
......
...@@ -761,8 +761,6 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev, ...@@ -761,8 +761,6 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
links[id].num_codecs = ARRAY_SIZE(max_98373_components); links[id].num_codecs = ARRAY_SIZE(max_98373_components);
links[id].init = max_98373_spk_codec_init; links[id].init = max_98373_spk_codec_init;
links[id].ops = &max_98373_ops; links[id].ops = &max_98373_ops;
/* feedback stream */
links[id].dpcm_capture = 1;
} else if (sof_rt5682_quirk & } else if (sof_rt5682_quirk &
SOF_MAX98360A_SPEAKER_AMP_PRESENT) { SOF_MAX98360A_SPEAKER_AMP_PRESENT) {
max_98360a_dai_link(&links[id]); max_98360a_dai_link(&links[id]);
...@@ -789,6 +787,9 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev, ...@@ -789,6 +787,9 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
links[id].platforms = platform_component; links[id].platforms = platform_component;
links[id].num_platforms = ARRAY_SIZE(platform_component); links[id].num_platforms = ARRAY_SIZE(platform_component);
links[id].dpcm_playback = 1; links[id].dpcm_playback = 1;
/* feedback stream or firmware-generated echo reference */
links[id].dpcm_capture = 1;
links[id].no_pcm = 1; links[id].no_pcm = 1;
links[id].cpus = &cpus[id]; links[id].cpus = &cpus[id];
links[id].num_cpus = 1; links[id].num_cpus = 1;
......
...@@ -258,13 +258,12 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev, ...@@ -258,13 +258,12 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
sof_rt1308_dai_link(&links[id]); sof_rt1308_dai_link(&links[id]);
} else if (sof_ssp_amp_quirk & SOF_CS35L41_SPEAKER_AMP_PRESENT) { } else if (sof_ssp_amp_quirk & SOF_CS35L41_SPEAKER_AMP_PRESENT) {
cs35l41_set_dai_link(&links[id]); cs35l41_set_dai_link(&links[id]);
/* feedback from amplifier */
links[id].dpcm_capture = 1;
} }
links[id].platforms = platform_component; links[id].platforms = platform_component;
links[id].num_platforms = ARRAY_SIZE(platform_component); links[id].num_platforms = ARRAY_SIZE(platform_component);
links[id].dpcm_playback = 1; links[id].dpcm_playback = 1;
/* feedback from amplifier or firmware-generated echo reference */
links[id].dpcm_capture = 1;
links[id].no_pcm = 1; links[id].no_pcm = 1;
links[id].cpus = &cpus[id]; links[id].cpus = &cpus[id];
links[id].num_cpus = 1; links[id].num_cpus = 1;
......
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