diff options
author | Florian Muller <mullerf@google.com> | 2023-05-23 12:42:55 -0700 |
---|---|---|
committer | Florian Muller <mullerf@google.com> | 2023-05-24 13:10:59 -0700 |
commit | 9512a588da7b56f5ed027c8d92f3b9929af7a92c (patch) | |
tree | e935b18c74a6e6d1a0e97f9d3c32c00e0923a869 /asoc | |
parent | 660df69530a70ca7e8e9e189e626922421535271 (diff) | |
download | msm-extra-9512a588da7b56f5ed027c8d92f3b9929af7a92c.tar.gz |
Add support for LPI_I2S3
Test: Manual
Bug: 274193301
Change-Id: Ifc39ec01412d16e2d90f587b321921207c9e3c3d
Signed-off-by: Florian Muller <mullerf@google.com>
BYPASS_INCLUSIVE_LANGUAGE_REASON=Following vendor code style in vendor
Diffstat (limited to 'asoc')
-rw-r--r-- | asoc/monaco.c | 53 | ||||
-rwxr-xr-x | asoc/msm_monaco_dailink.h | 10 |
2 files changed, 62 insertions, 1 deletions
diff --git a/asoc/monaco.c b/asoc/monaco.c index cc79e7de..341f6792 100644 --- a/asoc/monaco.c +++ b/asoc/monaco.c @@ -62,6 +62,16 @@ #undef LPASS_BE_SEC_MI2S_RX #define LPASS_BE_SEC_MI2S_RX "MI2S-LPAIF_AUD-RX-PRIMARY" #endif + +#ifdef LPASS_BE_TERT_MI2S_TX +#undef LPASS_BE_TERT_MI2S_TX +#define LPASS_BE_TERT_MI2S_TX "MI2S-LPAIF_AUD-TX-SECONDARY" +#endif + +#ifdef LPASS_BE_TERT_MI2S_RX +#undef LPASS_BE_TERT_MI2S_RX +#define LPASS_BE_TERT_MI2S_RX "MI2S-LPAIF_AUD-RX-SECONDARY" +#endif #endif #ifdef LPASS_BE_PRI_MI2S_TX @@ -233,8 +243,12 @@ static int get_intf_index(const char *stream_name) else if (strnstr(stream_name, "LPAIF_RXTX", strlen(stream_name))) return QUAT_MI2S_TDM_AUXPCM; #ifdef CONFIG_GOOGLE_SW5100_AUDIO - else if (strnstr(stream_name, "LPAIF_AUD", strlen(stream_name))) + else if (strnstr(stream_name, "LPAIF_AUD", strlen(stream_name)) + && strnstr(stream_name, "PRIMARY", strlen(stream_name))) return SEC_MI2S_TDM_AUXPCM; + else if (strnstr(stream_name, "LPAIF_AUD", strlen(stream_name)) + && strnstr(stream_name, "SECONDARY", strlen(stream_name))) + return TER_MI2S_TDM_AUXPCM; #endif else { pr_debug("%s: stream name %s does not match\n", __func__, stream_name); @@ -1047,6 +1061,31 @@ static struct snd_soc_dai_link msm_pri_mi2s_be_dai_links[] = { }; #ifdef CONFIG_GOOGLE_SW5100_AUDIO +static struct snd_soc_dai_link msm_tert_mi2s_be_dai_links[] = { + { + .name = LPASS_BE_TERT_MI2S_TX, + .stream_name = LPASS_BE_TERT_MI2S_TX, + .capture_only = 1, + .trigger = {SND_SOC_DPCM_TRIGGER_POST, + SND_SOC_DPCM_TRIGGER_POST}, + .ignore_pmdown_time = 1, + .ignore_suspend = 1, + .ops = &msm_common_be_ops, + SND_SOC_DAILINK_REG(tert_mi2s_tx), + }, + { + .name = LPASS_BE_TERT_MI2S_RX, + .stream_name = LPASS_BE_TERT_MI2S_RX, + .playback_only = 1, + .trigger = {SND_SOC_DPCM_TRIGGER_POST, + SND_SOC_DPCM_TRIGGER_POST}, + .ignore_pmdown_time = 1, + .ignore_suspend = 1, + .ops = &msm_common_be_ops, + SND_SOC_DAILINK_REG(tert_mi2s_rx), + }, +}; + static struct snd_soc_dai_link msm_sec_haptics_be_dai_links[] = { { .name = LPASS_BE_SEC_MI2S_RX, @@ -1122,6 +1161,7 @@ static struct snd_soc_dai_link msm_monaco_dai_links[ ARRAY_SIZE(msm_wcn_be_dai_links) + ARRAY_SIZE(msm_pri_mi2s_be_dai_links) + #ifdef CONFIG_GOOGLE_SW5100_AUDIO + ARRAY_SIZE(msm_tert_mi2s_be_dai_links) + ARRAY_SIZE(msm_sec_haptics_be_dai_links) + ARRAY_SIZE(msm_pri_haptics_be_dai_links) + #endif @@ -1219,6 +1259,17 @@ static struct snd_soc_card *populate_snd_card_dailinks(struct device *dev) #ifdef CONFIG_GOOGLE_SW5100_AUDIO rc = of_property_read_u32(dev->of_node, + "qcom,mi2s-tert-audio-intf", &val); + if (!rc && val) { + dev_info(dev, "%s(): MI2S Tertiary support present\n", + __func__); + memcpy(msm_monaco_dai_links + total_links, + msm_tert_mi2s_be_dai_links, + sizeof(msm_tert_mi2s_be_dai_links)); + total_links += ARRAY_SIZE(msm_tert_mi2s_be_dai_links); + } + + rc = of_property_read_u32(dev->of_node, "qcom,cs40l26-codec-sec-i2s", &val); if (!rc && val) { dev_info(dev, "%s(): CS40L26 codec support present" diff --git a/asoc/msm_monaco_dailink.h b/asoc/msm_monaco_dailink.h index c1d0be4e..04518a30 100755 --- a/asoc/msm_monaco_dailink.h +++ b/asoc/msm_monaco_dailink.h @@ -146,6 +146,16 @@ SND_SOC_DAILINK_DEFS(quat_tdm_tx_0, COMP_CODEC("mcu_mic_codec", "mcu_mic_codec_dai")), DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy"))); +SND_SOC_DAILINK_DEFS(tert_mi2s_rx, + 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(tert_mi2s_tx, + 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(sec_mi2s_haptics_rx, DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")), DAILINK_COMP_ARRAY(COMP_CODEC("cs40l26-codec.2.auto", "cs40l26-pcm")), |