Add new codec endpoints and define components to support RT5682-VS variants of codec with ACP machines.
Signed-off-by: Ajit Kumar Pandey AjitKumar.Pandey@amd.com --- sound/soc/amd/acp/Kconfig | 1 + sound/soc/amd/acp/acp-mach-common.c | 25 +++++++++++++++++++++++++ sound/soc/amd/acp/acp-mach.h | 1 + 3 files changed, 27 insertions(+)
diff --git a/sound/soc/amd/acp/Kconfig b/sound/soc/amd/acp/Kconfig index 8257b8e1e7cc..7e3c32f5b982 100644 --- a/sound/soc/amd/acp/Kconfig +++ b/sound/soc/amd/acp/Kconfig @@ -31,6 +31,7 @@ config SND_SOC_AMD_MACH_COMMON select SND_SOC_DMIC select SND_SOC_RT1019 select SND_SOC_MAX98357A + select SND_SOC_RT5682S depends on X86 && PCI && I2C help This option enables common Machine driver module for ACP diff --git a/sound/soc/amd/acp/acp-mach-common.c b/sound/soc/amd/acp/acp-mach-common.c index 80c6cd220674..5e7da4515e5e 100644 --- a/sound/soc/amd/acp/acp-mach-common.c +++ b/sound/soc/amd/acp/acp-mach-common.c @@ -23,6 +23,7 @@
#include "../../codecs/rt5682.h" #include "../../codecs/rt1019.h" +#include "../../codecs/rt5682s.h" #include "acp-mach.h"
#define PCO_PLAT_CLK 48000000 @@ -64,6 +65,9 @@ static int acp_clk_enable(struct acp_card_drvdata *drvdata) SND_SOC_DAILINK_DEF(rt5682, DAILINK_COMP_ARRAY(COMP_CODEC("i2c-10EC5682:00", "rt5682-aif1")));
+SND_SOC_DAILINK_DEF(rt5682s, + DAILINK_COMP_ARRAY(COMP_CODEC("i2c-RTL5682:00", "rt5682s-aif1"))); + static const struct snd_soc_dapm_route rt5682_map[] = { { "Headphone Jack", NULL, "HPOL" }, { "Headphone Jack", NULL, "HPOR" }, @@ -135,6 +139,19 @@ static int acp_asoc_hs_init(struct snd_soc_pcm_runtime *rtd) | SND_SOC_DAIFMT_CBP_CFP; snd_soc_dapm_add_routes(&rtd->card->dapm, rt5682_map, ARRAY_SIZE(rt5682_map)); break; + case RT5682S: + pll_id = RT5682S_PLL2; + pll_src = RT5682S_PLL_S_MCLK; + freq_in = PCO_PLAT_CLK; + freq_out = RT5682_PLL_FREQ; + clk_id = RT5682S_SCLK_S_PLL2; + clk_freq = RT5682_PLL_FREQ; + wclk_name = "rt5682-dai-wclk"; + bclk_name = "rt5682-dai-bclk"; + drvdata->dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF + | SND_SOC_DAIFMT_CBM_CFM; + snd_soc_dapm_add_routes(&rtd->card->dapm, rt5682_map, ARRAY_SIZE(rt5682_map)); + break; default: dev_err(rtd->dev, "Invalid codec id %d\n", drvdata->hs_codec_id); return -EINVAL; @@ -401,6 +418,10 @@ int acp_sofdsp_dai_links_create(struct snd_soc_card *card) links[i].codecs = rt5682; links[i].num_codecs = ARRAY_SIZE(rt5682); } + if (drv_data->hs_codec_id == RT5682S) { + links[i].codecs = rt5682s; + links[i].num_codecs = ARRAY_SIZE(rt5682s); + } i++; }
@@ -492,6 +513,10 @@ int acp_legacy_dai_links_create(struct snd_soc_card *card) links[i].codecs = rt5682; links[i].num_codecs = ARRAY_SIZE(rt5682); } + if (drv_data->hs_codec_id == RT5682S) { + links[i].codecs = rt5682s; + links[i].num_codecs = ARRAY_SIZE(rt5682s); + } i++; }
diff --git a/sound/soc/amd/acp/acp-mach.h b/sound/soc/amd/acp/acp-mach.h index b6a43d1b9ad4..5dc47cfbff10 100644 --- a/sound/soc/amd/acp/acp-mach.h +++ b/sound/soc/amd/acp/acp-mach.h @@ -36,6 +36,7 @@ enum codec_endpoints { RT5682, RT1019, MAX98360A, + RT5682S, };
struct acp_card_drvdata {