summaryrefslogtreecommitdiff
path: root/asoc
diff options
context:
space:
mode:
authorFlorian Muller <mullerf@google.com>2023-05-23 12:42:55 -0700
committerFlorian Muller <mullerf@google.com>2023-05-24 13:10:59 -0700
commit9512a588da7b56f5ed027c8d92f3b9929af7a92c (patch)
treee935b18c74a6e6d1a0e97f9d3c32c00e0923a869 /asoc
parent660df69530a70ca7e8e9e189e626922421535271 (diff)
downloadmsm-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.c53
-rwxr-xr-xasoc/msm_monaco_dailink.h10
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")),