diff --git a/sound/soc/msm/msm8998.c b/sound/soc/msm/msm8998.c index 7f43ef401a4f..6396cd6aaf39 100644 --- a/sound/soc/msm/msm8998.c +++ b/sound/soc/msm/msm8998.c @@ -4947,6 +4947,26 @@ static struct snd_soc_dai_link msm_tavil_fe_dai_links[] = { }, }; +static struct snd_soc_dai_link msm_common_misc_fe_dai_links[] = { + { + .name = MSM_DAILINK_NAME(ASM Loopback), + .stream_name = "MultiMedia6", + .cpu_dai_name = "MultiMedia6", + .platform_name = "msm-pcm-loopback", + .dynamic = 1, + .dpcm_playback = 1, + .dpcm_capture = 1, + .codec_dai_name = "snd-soc-dummy-dai", + .codec_name = "snd-soc-dummy", + .trigger = {SND_SOC_DPCM_TRIGGER_POST, + SND_SOC_DPCM_TRIGGER_POST}, + .ignore_suspend = 1, + .no_host_mode = SND_SOC_DAI_LINK_NO_HOST, + .ignore_pmdown_time = 1, + .be_id = MSM_FRONTEND_DAI_MULTIMEDIA6, + }, +}; + static struct snd_soc_dai_link msm_common_be_dai_links[] = { /* Backend AFE DAI Links */ { @@ -5870,6 +5890,7 @@ static struct snd_soc_dai_link msm_auxpcm_be_dai_links[] = { static struct snd_soc_dai_link msm_tasha_dai_links[ ARRAY_SIZE(msm_common_dai_links) + ARRAY_SIZE(msm_tasha_fe_dai_links) + + ARRAY_SIZE(msm_common_misc_fe_dai_links) + ARRAY_SIZE(msm_common_be_dai_links) + ARRAY_SIZE(msm_tasha_be_dai_links) + ARRAY_SIZE(msm_wcn_be_dai_links) + @@ -5880,6 +5901,7 @@ static struct snd_soc_dai_link msm_tasha_dai_links[ static struct snd_soc_dai_link msm_tavil_dai_links[ ARRAY_SIZE(msm_common_dai_links) + ARRAY_SIZE(msm_tavil_fe_dai_links) + + ARRAY_SIZE(msm_common_misc_fe_dai_links) + ARRAY_SIZE(msm_common_be_dai_links) + ARRAY_SIZE(msm_tavil_be_dai_links) + ARRAY_SIZE(msm_wcn_be_dai_links) + @@ -6213,7 +6235,7 @@ static struct snd_soc_card *populate_snd_card_dailinks(struct device *dev) { struct snd_soc_card *card = NULL; struct snd_soc_dai_link *dailink; - int len_1, len_2, len_3; + int len_1, len_2, len_3, len_4; int total_links; const struct of_device_id *match; @@ -6228,8 +6250,9 @@ static struct snd_soc_card *populate_snd_card_dailinks(struct device *dev) card = &snd_soc_card_tasha_msm; len_1 = ARRAY_SIZE(msm_common_dai_links); len_2 = len_1 + ARRAY_SIZE(msm_tasha_fe_dai_links); - len_3 = len_2 + ARRAY_SIZE(msm_common_be_dai_links); - total_links = len_3 + ARRAY_SIZE(msm_tasha_be_dai_links); + len_3 = len_2 + ARRAY_SIZE(msm_common_misc_fe_dai_links); + len_4 = len_3 + ARRAY_SIZE(msm_common_be_dai_links); + total_links = len_4 + ARRAY_SIZE(msm_tasha_be_dai_links); memcpy(msm_tasha_dai_links, msm_common_dai_links, sizeof(msm_common_dai_links)); @@ -6237,9 +6260,12 @@ static struct snd_soc_card *populate_snd_card_dailinks(struct device *dev) msm_tasha_fe_dai_links, sizeof(msm_tasha_fe_dai_links)); memcpy(msm_tasha_dai_links + len_2, + msm_common_misc_fe_dai_links, + sizeof(msm_common_misc_fe_dai_links)); + memcpy(msm_tasha_dai_links + len_3, msm_common_be_dai_links, sizeof(msm_common_be_dai_links)); - memcpy(msm_tasha_dai_links + len_3, + memcpy(msm_tasha_dai_links + len_4, msm_tasha_be_dai_links, sizeof(msm_tasha_be_dai_links)); @@ -6280,8 +6306,9 @@ static struct snd_soc_card *populate_snd_card_dailinks(struct device *dev) card = &snd_soc_card_tavil_msm; len_1 = ARRAY_SIZE(msm_common_dai_links); len_2 = len_1 + ARRAY_SIZE(msm_tavil_fe_dai_links); - len_3 = len_2 + ARRAY_SIZE(msm_common_be_dai_links); - total_links = len_3 + ARRAY_SIZE(msm_tavil_be_dai_links); + len_3 = len_2 + ARRAY_SIZE(msm_common_misc_fe_dai_links); + len_4 = len_3 + ARRAY_SIZE(msm_common_be_dai_links); + total_links = len_4 + ARRAY_SIZE(msm_tavil_be_dai_links); memcpy(msm_tavil_dai_links, msm_common_dai_links, sizeof(msm_common_dai_links)); @@ -6289,9 +6316,12 @@ static struct snd_soc_card *populate_snd_card_dailinks(struct device *dev) msm_tavil_fe_dai_links, sizeof(msm_tavil_fe_dai_links)); memcpy(msm_tavil_dai_links + len_2, + msm_common_misc_fe_dai_links, + sizeof(msm_common_misc_fe_dai_links)); + memcpy(msm_tavil_dai_links + len_3, msm_common_be_dai_links, sizeof(msm_common_be_dai_links)); - memcpy(msm_tavil_dai_links + len_3, + memcpy(msm_tavil_dai_links + len_4, msm_tavil_be_dai_links, sizeof(msm_tavil_be_dai_links));