mirror of https://gitee.com/openkylin/linux.git
ASoC: intel: sof_rt5682: use separate route map for dmic
dmic map can only be added when dmic dai link is present. Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20190927201408.925-3-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
43b2ab9009
commit
4413adc4fd
|
@ -308,6 +308,9 @@ static const struct snd_soc_dapm_widget sof_widgets[] = {
|
|||
SND_SOC_DAPM_HP("Headphone Jack", NULL),
|
||||
SND_SOC_DAPM_MIC("Headset Mic", NULL),
|
||||
SND_SOC_DAPM_SPK("Spk", NULL),
|
||||
};
|
||||
|
||||
static const struct snd_soc_dapm_widget dmic_widgets[] = {
|
||||
SND_SOC_DAPM_MIC("SoC DMIC", NULL),
|
||||
};
|
||||
|
||||
|
@ -318,10 +321,6 @@ static const struct snd_soc_dapm_route sof_map[] = {
|
|||
|
||||
/* other jacks */
|
||||
{ "IN1P", NULL, "Headset Mic" },
|
||||
|
||||
/* digital mics */
|
||||
{"DMic", NULL, "SoC DMIC"},
|
||||
|
||||
};
|
||||
|
||||
static const struct snd_soc_dapm_route speaker_map[] = {
|
||||
|
@ -329,6 +328,11 @@ static const struct snd_soc_dapm_route speaker_map[] = {
|
|||
{ "Spk", NULL, "Speaker" },
|
||||
};
|
||||
|
||||
static const struct snd_soc_dapm_route dmic_map[] = {
|
||||
/* digital mics */
|
||||
{"DMic", NULL, "SoC DMIC"},
|
||||
};
|
||||
|
||||
static int speaker_codec_init(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_soc_card *card = rtd->card;
|
||||
|
@ -342,6 +346,28 @@ static int speaker_codec_init(struct snd_soc_pcm_runtime *rtd)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int dmic_init(struct snd_soc_pcm_runtime *rtd)
|
||||
{
|
||||
struct snd_soc_card *card = rtd->card;
|
||||
int ret;
|
||||
|
||||
ret = snd_soc_dapm_new_controls(&card->dapm, dmic_widgets,
|
||||
ARRAY_SIZE(dmic_widgets));
|
||||
if (ret) {
|
||||
dev_err(card->dev, "DMic widget addition failed: %d\n", ret);
|
||||
/* Don't need to add routes if widget addition failed */
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = snd_soc_dapm_add_routes(&card->dapm, dmic_map,
|
||||
ARRAY_SIZE(dmic_map));
|
||||
|
||||
if (ret)
|
||||
dev_err(card->dev, "DMic map addition failed: %d\n", ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* sof audio machine driver for rt5682 codec */
|
||||
static struct snd_soc_card sof_audio_card_rt5682 = {
|
||||
.name = "sof_rt5682",
|
||||
|
@ -445,6 +471,7 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
|
|||
links[id].name = "dmic01";
|
||||
links[id].cpus = &cpus[id];
|
||||
links[id].cpus->dai_name = "DMIC01 Pin";
|
||||
links[id].init = dmic_init;
|
||||
if (dmic_be_num > 1) {
|
||||
/* set up 2 BE links at most */
|
||||
links[id + 1].name = "dmic16k";
|
||||
|
|
Loading…
Reference in New Issue