From b490a90b347436922854511db7ed61501c7cfa50 Mon Sep 17 00:00:00 2001 From: Huicheng Liu Date: Wed, 24 Aug 2022 18:28:21 -0400 Subject: [PATCH] asoc: audio reach kernel bringup on 8255 GVM * Refine populate_snd_card_dailinks function. * Add oct_tdm, hs_if3_tdm and hs_if4_tdm. Change-Id: Iaca5b1d4f107ede773530a60b457a510244f784a Signed-off-by: Huicheng Liu --- asoc/Kbuild | 2 +- asoc/gvm_auto_spf_dummy.c | 120 +++++++++++++++++++++++--------------- asoc/msm_dailink.h | 30 ++++++++++ 3 files changed, 103 insertions(+), 49 deletions(-) diff --git a/asoc/Kbuild b/asoc/Kbuild index 84aaa73b3eeb..6bfe53412acb 100755 --- a/asoc/Kbuild +++ b/asoc/Kbuild @@ -186,7 +186,7 @@ ifdef CONFIG_SND_SOC_SA8155 MACHINE_OBJS += sa8155.o endif -# for gvmgh sound card driver +# for gvm sound card driver ifdef CONFIG_SND_SOC_GVM_AUTO_SPF SPF_MACHINE_OBJS += gvm_auto_spf_dummy.o endif diff --git a/asoc/gvm_auto_spf_dummy.c b/asoc/gvm_auto_spf_dummy.c index b5e248ed5830..7b5fb095c122 100644 --- a/asoc/gvm_auto_spf_dummy.c +++ b/asoc/gvm_auto_spf_dummy.c @@ -324,7 +324,7 @@ static struct snd_soc_dai_link msm_common_dai_links[] = { }, }; -static struct snd_soc_dai_link msm_gvm8295_dai_links[] = { +static struct snd_soc_dai_link msm_gvm_auto_dai_links[] = { /* BackEnd DAI Links */ { .name = "PRI_TDM_RX_0_DUMMY", @@ -467,6 +467,26 @@ static struct snd_soc_dai_link msm_gvm8295_dai_links[] = { SND_SOC_DAILINK_REG(sep_tdm_tx_0_dummy), }, { + .name = "OCT_TDM_RX_0_DUMMY", + .stream_name = "TDM-LPAIF_WSA2-RX-PRIMARY", + .dpcm_playback = 1, + .trigger = {SND_SOC_DPCM_TRIGGER_POST, + SND_SOC_DPCM_TRIGGER_POST}, + .ignore_suspend = 1, + .ignore_pmdown_time = 1, + SND_SOC_DAILINK_REG(oct_tdm_rx_0_dummy), + }, + { + .name = "OCT_TDM_TX_0_DUMMY", + .stream_name = "TDM-LPAIF_WSA2-TX-PRIMARY", + .dpcm_capture = 1, + .trigger = {SND_SOC_DPCM_TRIGGER_POST, + SND_SOC_DPCM_TRIGGER_POST}, + .ignore_suspend = 1, + .ignore_pmdown_time = 1, + SND_SOC_DAILINK_REG(oct_tdm_tx_0_dummy), + }, + { .name = "HS_IF0_TDM_RX_0_DUMMY", .stream_name = "TDM-LPAIF_SDR-RX-PRIMARY", .dpcm_playback = 1, @@ -526,6 +546,46 @@ static struct snd_soc_dai_link msm_gvm8295_dai_links[] = { .ignore_pmdown_time = 1, SND_SOC_DAILINK_REG(hs_if2_tdm_tx_0_dummy), }, + { + .name = "HS_IF3_TDM_RX_0", + .stream_name = "TDM-LPAIF_SDR-RX-QUATERNARY", + .dpcm_playback = 1, + .trigger = {SND_SOC_DPCM_TRIGGER_POST, + SND_SOC_DPCM_TRIGGER_POST}, + .ignore_suspend = 1, + .ignore_pmdown_time = 1, + SND_SOC_DAILINK_REG(hs_if3_tdm_rx_0_dummy), + }, + { + .name = "HS_IF3_TDM_TX_0", + .stream_name = "TDM-LPAIF_SDR-TX-QUATERNARY", + .dpcm_capture = 1, + .trigger = {SND_SOC_DPCM_TRIGGER_POST, + SND_SOC_DPCM_TRIGGER_POST}, + .ignore_suspend = 1, + .ignore_pmdown_time = 1, + SND_SOC_DAILINK_REG(hs_if3_tdm_tx_0_dummy), + }, + { + .name = "HS_IF4_TDM_RX_0", + .stream_name = "TDM-LPAIF_SDR-RX-QUINARY", + .dpcm_playback = 1, + .trigger = {SND_SOC_DPCM_TRIGGER_POST, + SND_SOC_DPCM_TRIGGER_POST}, + .ignore_suspend = 1, + .ignore_pmdown_time = 1, + SND_SOC_DAILINK_REG(hs_if4_tdm_rx_0_dummy), + }, + { + .name = "HS_IF4_TDM_TX_0", + .stream_name = "TDM-LPAIF_SDR-TX-QUINARY", + .dpcm_capture = 1, + .trigger = {SND_SOC_DPCM_TRIGGER_POST, + SND_SOC_DPCM_TRIGGER_POST}, + .ignore_suspend = 1, + .ignore_pmdown_time = 1, + SND_SOC_DAILINK_REG(hs_if4_tdm_tx_0_dummy), + }, }; static struct snd_soc_dai_link msm_talos_dai_links[] = { @@ -632,17 +692,7 @@ static struct snd_soc_dai_link msm_talos_dai_links[] = { }, }; -struct snd_soc_card snd_soc_card_auto_hana_dummy_msm = { - .name = "gvmauto-8155-snd-card", -}; - -struct snd_soc_card snd_soc_card_auto_talos_dummy_msm = { - .name = "gvmauto-6155-snd-card", -}; - -struct snd_soc_card snd_soc_card_auto_makena_dummy_msm = { - .name = "gvmauto-8295-snd-card", -}; +struct snd_soc_card snd_soc_card_gvm_auto_dummy_msm; static int msm_populate_dai_link_component_of_node( struct snd_soc_card *card) @@ -751,21 +801,11 @@ static const struct of_device_id gvm_asoc_machine_of_match[] = { .data = "adp_star_codec"}, {}, }; -static struct snd_soc_dai_link msm_auto_dai_links[ - ARRAY_SIZE(msm_common_dai_links)]; - -static struct snd_soc_dai_link msm_auto_talos_dai_links[ - ARRAY_SIZE(msm_talos_dai_links)]; - -static struct snd_soc_dai_link msm_auto_gvm8295_dai_links[ - ARRAY_SIZE(msm_gvm8295_dai_links)]; 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 total_links; - const struct of_device_id *match; + const struct of_device_id *match = NULL; match = of_match_node(gvm_asoc_machine_of_match, dev->of_node); if (!match) { @@ -774,34 +814,18 @@ static struct snd_soc_card *populate_snd_card_dailinks(struct device *dev) return NULL; } + card = &snd_soc_card_gvm_auto_dummy_msm; + if (!strcmp(match->compatible, "qcom,8155-spf-asoc-snd-adp-star")) { - card = &snd_soc_card_auto_hana_dummy_msm; - total_links = ARRAY_SIZE(msm_common_dai_links); - memcpy(msm_auto_dai_links, - msm_common_dai_links, - sizeof(msm_common_dai_links)); - - dailink = msm_auto_dai_links; + card->dai_link = msm_common_dai_links; + card->num_links = ARRAY_SIZE(msm_common_dai_links); } else if (!strcmp(match->compatible, "qcom,6155-spf-asoc-snd-adp-star")) { - card = &snd_soc_card_auto_talos_dummy_msm; - total_links = ARRAY_SIZE(msm_talos_dai_links); - memcpy(msm_auto_talos_dai_links, - msm_talos_dai_links, - sizeof(msm_talos_dai_links)); - dailink = msm_auto_talos_dai_links; + card->dai_link = msm_talos_dai_links; + card->num_links = ARRAY_SIZE(msm_talos_dai_links); } else if (!strcmp(match->compatible, "qcom,gvm-auto-spf-asoc-snd-adp-star")) { - card = &snd_soc_card_auto_makena_dummy_msm; - total_links = ARRAY_SIZE(msm_gvm8295_dai_links); - memcpy(msm_auto_gvm8295_dai_links, - msm_gvm8295_dai_links, - sizeof(msm_gvm8295_dai_links)); - dailink = msm_auto_gvm8295_dai_links; - } - - if (card) { - card->dai_link = dailink; - card->num_links = total_links; - } + card->dai_link = msm_gvm_auto_dai_links; + card->num_links = ARRAY_SIZE(msm_gvm_auto_dai_links); +} return card; } diff --git a/asoc/msm_dailink.h b/asoc/msm_dailink.h index 5363641b5644..c7353b9ae05d 100644 --- a/asoc/msm_dailink.h +++ b/asoc/msm_dailink.h @@ -1392,6 +1392,16 @@ SND_SOC_DAILINK_DEFS(sep_tdm_tx_0_dummy, DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")), DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy"))); +SND_SOC_DAILINK_DEFS(oct_tdm_rx_0_dummy, + DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")), + DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")), + DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy"))); + +SND_SOC_DAILINK_DEFS(oct_tdm_tx_0_dummy, + DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")), + DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")), + DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy"))); + SND_SOC_DAILINK_DEFS(hs_if0_tdm_rx_0_dummy, DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")), DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")), @@ -1422,6 +1432,26 @@ SND_SOC_DAILINK_DEFS(hs_if2_tdm_tx_0_dummy, DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")), DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy"))); +SND_SOC_DAILINK_DEFS(hs_if3_tdm_rx_0_dummy, + DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")), + DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")), + DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy"))); + +SND_SOC_DAILINK_DEFS(hs_if3_tdm_tx_0_dummy, + DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")), + DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")), + DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy"))); + +SND_SOC_DAILINK_DEFS(hs_if4_tdm_rx_0_dummy, + DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")), + DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")), + DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy"))); + +SND_SOC_DAILINK_DEFS(hs_if4_tdm_tx_0_dummy, + DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")), + DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")), + DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy"))); + SND_SOC_DAILINK_DEFS(voicemmode1_hostless, DAILINK_COMP_ARRAY(COMP_CPU("VoiceMMode1")), DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),