lahaina: add mi2s and tdm dai-links

Change-Id: I3d541b110cc849b6e323f4df55be208e153d65eb
Signed-off-by: Phani Kumar Uppalapati <phaniu@codeaurora.org>
This commit is contained in:
Phani Kumar Uppalapati
2020-09-15 18:35:22 -07:00
parent 584244b6ac
commit 10bed4cd23
4 changed files with 137 additions and 45 deletions

View File

@@ -631,6 +631,54 @@ static struct snd_soc_dai_link msm_va_cdc_dma_be_dai_links[] = {
},
};
static struct snd_soc_dai_link msm_mi2s_dai_links[] = {
{
.name = LPASS_BE_QUAT_MI2S_RX,
.stream_name = LPASS_BE_QUAT_MI2S_RX,
.playback_only = 1,
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
SND_SOC_DPCM_TRIGGER_POST},
.ops = &msm_common_be_ops,
.ignore_suspend = 1,
.ignore_pmdown_time = 1,
SND_SOC_DAILINK_REG(quat_mi2s_rx),
},
{
.name = LPASS_BE_QUAT_MI2S_TX,
.stream_name = LPASS_BE_QUAT_MI2S_TX,
.capture_only = 1,
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
SND_SOC_DPCM_TRIGGER_POST},
.ops = &msm_common_be_ops,
.ignore_suspend = 1,
SND_SOC_DAILINK_REG(quat_mi2s_tx),
},
};
static struct snd_soc_dai_link msm_tdm_dai_links[] = {
{
.name = LPASS_BE_PRI_TDM_RX_0,
.stream_name = LPASS_BE_PRI_TDM_RX_0,
.playback_only = 1,
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
SND_SOC_DPCM_TRIGGER_POST},
.ops = &msm_common_be_ops,
.ignore_suspend = 1,
.ignore_pmdown_time = 1,
SND_SOC_DAILINK_REG(pri_tdm_rx_0),
},
{
.name = LPASS_BE_PRI_TDM_TX_0,
.stream_name = LPASS_BE_PRI_TDM_TX_0,
.capture_only = 1,
.trigger = {SND_SOC_DPCM_TRIGGER_POST,
SND_SOC_DPCM_TRIGGER_POST},
.ops = &msm_common_be_ops,
.ignore_suspend = 1,
SND_SOC_DAILINK_REG(pri_tdm_tx_0),
},
};
static struct snd_soc_dai_link msm_lahaina_dai_links[
ARRAY_SIZE(msm_wsa_cdc_dma_be_dai_links) +
ARRAY_SIZE(msm_rx_tx_cdc_dma_be_dai_links) +
@@ -639,7 +687,10 @@ static struct snd_soc_dai_link msm_lahaina_dai_links[
ARRAY_SIZE(ext_disp_be_dai_link) +
#endif
ARRAY_SIZE(msm_common_be_dai_links) +
ARRAY_SIZE(msm_wcn_be_dai_links)];
ARRAY_SIZE(msm_wcn_be_dai_links) +
ARRAY_SIZE(msm_mi2s_dai_links) +
ARRAY_SIZE(msm_tdm_dai_links)];
static int msm_populate_dai_link_component_of_node(
struct snd_soc_card *card)
@@ -870,6 +921,23 @@ static struct snd_soc_card *populate_snd_card_dailinks(struct device *dev)
sizeof(msm_common_be_dai_links));
total_links += ARRAY_SIZE(msm_common_be_dai_links);
rc = of_property_read_u32(dev->of_node,
"qcom,mi2s-audio-intf", &val);
if (!rc && val) {
memcpy(msm_lahaina_dai_links + total_links,
msm_mi2s_dai_links,
sizeof(msm_mi2s_dai_links));
total_links += ARRAY_SIZE(msm_mi2s_dai_links);
}
rc = of_property_read_u32(dev->of_node,
"qcom,tdm-audio-intf", &val);
if (!rc && val) {
memcpy(msm_lahaina_dai_links + total_links,
msm_tdm_dai_links,
sizeof(msm_tdm_dai_links));
total_links += ARRAY_SIZE(msm_tdm_dai_links);
}
#if IS_ENABLED(CONFIG_AUDIO_QGKI)
rc = of_property_read_u32(dev->of_node,

View File

@@ -20,31 +20,31 @@
#define LPASS_BE_DISPLAY_PORT_RX "DISPLAY_PORT-RX"
#define LPASS_BE_PRI_AUXPCM_RX "AUXPCM-LPAIF_AXI-RX-PRIMARY"
#define LPASS_BE_PRI_AUXPCM_TX "AUXPCM-LPAIF_AXI-TX-PRIMARY"
#define LPASS_BE_SEC_AUXPCM_RX "AUXPCM-LPAIF_AXI-RX-SECONDARY"
#define LPASS_BE_SEC_AUXPCM_TX "AUXPCM-LPAIF_AXI-TX-SECONDARY"
#define LPASS_BE_TERT_AUXPCM_RX "AUXPCM-LPAIF_AXI-RX-TERTIARY"
#define LPASS_BE_TERT_AUXPCM_TX "AUXPCM-LPAIF_AXI-TX-TERTIARY"
#define LPASS_BE_QUAT_AUXPCM_RX "AUXPCM-LPAIF_AXI-RX-QUATERNARY"
#define LPASS_BE_QUAT_AUXPCM_TX "AUXPCM-LPAIF_AXI-TX-QUATERNARY"
#define LPASS_BE_QUIN_AUXPCM_RX "AUXPCM-LPAIF_AXI-RX-QUINARY"
#define LPASS_BE_QUIN_AUXPCM_TX "AUXPCM-LPAIF_AXI-TX-QUINARY"
#define LPASS_BE_SEN_AUXPCM_RX "AUXPCM-LPAIF_AXI-RX-SENARY"
#define LPASS_BE_SEN_AUXPCM_TX "AUXPCM-LPAIF_AXI-TX-SENARY"
#define LPASS_BE_PRI_AUXPCM_RX "AUXPCM-LPAIF-RX-PRIMARY"
#define LPASS_BE_PRI_AUXPCM_TX "AUXPCM-LPAIF-TX-PRIMARY"
#define LPASS_BE_SEC_AUXPCM_RX "AUXPCM-LPAIF-RX-SECONDARY"
#define LPASS_BE_SEC_AUXPCM_TX "AUXPCM-LPAIF-TX-SECONDARY"
#define LPASS_BE_TERT_AUXPCM_RX "AUXPCM-LPAIF-RX-TERTIARY"
#define LPASS_BE_TERT_AUXPCM_TX "AUXPCM-LPAIF-TX-TERTIARY"
#define LPASS_BE_QUAT_AUXPCM_RX "AUXPCM-LPAIF_RXTX-RX-QUATERNARY"
#define LPASS_BE_QUAT_AUXPCM_TX "AUXPCM-LPAIF_RXTX-TX-QUATERNARY"
#define LPASS_BE_QUIN_AUXPCM_RX "AUXPCM-LPAIF_VA-RX-QUINARY"
#define LPASS_BE_QUIN_AUXPCM_TX "AUXPCM-LPAIF_VA-TX-QUINARY"
#define LPASS_BE_SEN_AUXPCM_RX "AUXPCM-LPAIF_WSA-RX-SENARY"
#define LPASS_BE_SEN_AUXPCM_TX "AUXPCM-LPAIF_WSA-TX-SENARY"
#define LPASS_BE_PRI_MI2S_RX "MI2S-LPAIF_AXI-RX-PRIMARY"
#define LPASS_BE_PRI_MI2S_TX "MI2S-LPAIF_AXI-TX-PRIMARY"
#define LPASS_BE_SEC_MI2S_RX "MI2S-LPAIF_AXI-RX-SECONDARY"
#define LPASS_BE_SEC_MI2S_TX "MI2S-LPAIF_AXI-TX-SECONDARY"
#define LPASS_BE_TERT_MI2S_RX "MI2S-LPAIF_AXI-RX-TERTIARY"
#define LPASS_BE_TERT_MI2S_TX "MI2S-LPAIF_AXI-TX-TERTIARY"
#define LPASS_BE_QUAT_MI2S_RX "MI2S-LPAIF_AXI-RX-QUATERNARY"
#define LPASS_BE_QUAT_MI2S_TX "MI2S-LPAIF_AXI-TX-QUATERNARY"
#define LPASS_BE_QUIN_MI2S_RX "MI2S-LPAIF_AXI-RX-QUINARY"
#define LPASS_BE_QUIN_MI2S_TX "MI2S-LPAIF_AXI-TX-QUINARY"
#define LPASS_BE_SEN_MI2S_TX "MI2S-LPAIF_AXI-RX-SENARY"
#define LPASS_BE_SEN_MI2S_RX "MI2S-LPAIF_AXI-TX-SENARY"
#define LPASS_BE_PRI_MI2S_RX "MI2S-LPAIF-RX-PRIMARY"
#define LPASS_BE_PRI_MI2S_TX "MI2S-LPAIF-TX-PRIMARY"
#define LPASS_BE_SEC_MI2S_RX "MI2S-LPAIF-RX-SECONDARY"
#define LPASS_BE_SEC_MI2S_TX "MI2S-LPAIF-TX-SECONDARY"
#define LPASS_BE_TERT_MI2S_RX "MI2S-LPAIF-RX-TERTIARY"
#define LPASS_BE_TERT_MI2S_TX "MI2S-LPAIF-TX-TERTIARY"
#define LPASS_BE_QUAT_MI2S_RX "MI2S-LPAIF_RXTX-RX-QUATERNARY"
#define LPASS_BE_QUAT_MI2S_TX "MI2S-LPAIF_RXTX-TX-QUATERNARY"
#define LPASS_BE_QUIN_MI2S_RX "MI2S-LPAIF_VA-RX-QUINARY"
#define LPASS_BE_QUIN_MI2S_TX "MI2S-LPAIF_VA-TX-QUINARY"
#define LPASS_BE_SEN_MI2S_TX "MI2S-LPAIF_WSA-RX-SENARY"
#define LPASS_BE_SEN_MI2S_RX "MI2S-LPAIF_WSA-TX-SENARY"
#define LPASS_BE_SLIMBUS_0_RX "SLIM-DEV1-RX-0"
#define LPASS_BE_SLIMBUS_0_TX "SLIM-DEV1-TX-0"
@@ -63,18 +63,19 @@
#define LPASS_BE_SLIMBUS_7_RX "SLIM-DEV1-RX-7"
#define LPASS_BE_SLIMBUS_7_TX "SLIM-DEV1-TX-7"
#define LPASS_BE_PRI_TDM_RX_0 "TDM-LPAIF_AXI-RX-PRIMARY"
#define LPASS_BE_PRI_TDM_TX_0 "TDM-LPAIF_AXI-TX-PRIMARY"
#define LPASS_BE_SEC_TDM_RX_0 "TDM-LPAIF_AXI-RX-SECONDARY"
#define LPASS_BE_SEC_TDM_TX_0 "TDM-LPAIF_AXI-TX-SECONDARY"
#define LPASS_BE_TERT_TDM_RX_0 "TDM-LPAIF_AXI-RX-TERTIARY"
#define LPASS_BE_TERT_TDM_TX_0 "TDM-LPAIF_AXI-TX-TERTIARY"
#define LPASS_BE_QUAT_TDM_RX_0 "TDM-LPAIF_AXI-RX-QUATERNARY"
#define LPASS_BE_QUAT_TDM_TX_0 "TDM-LPAIF_AXI-TX-QUATERNARY"
#define LPASS_BE_QUIN_TDM_RX_0 "TDM-LPAIF_AXI-RX-QUINARY"
#define LPASS_BE_QUIN_TDM_TX_0 "TDM-LPAIF_AXI-TX-QUINARY"
#define LPASS_BE_SEN_TDM_RX_0 "TDM-LPAIF_AXI-RX-SENARY"
#define LPASS_BE_SEN_TDM_TX_0 "TDM-LPAIF_AXI-TX-SENARY"
#define LPASS_BE_PRI_TDM_RX_0 "TDM-LPAIF-RX-PRIMARY"
#define LPASS_BE_PRI_TDM_TX_0 "TDM-LPAIF-TX-PRIMARY"
#define LPASS_BE_SEC_TDM_RX_0 "TDM-LPAIF-RX-SECONDARY"
#define LPASS_BE_SEC_TDM_TX_0 "TDM-LPAIF-TX-SECONDARY"
#define LPASS_BE_TERT_TDM_RX_0 "TDM-LPAIF-RX-TERTIARY"
#define LPASS_BE_TERT_TDM_TX_0 "TDM-LPAIF-TX-TERTIARY"
#define LPASS_BE_SEN_TDM_RX_0 "TDM-LPAIF_WSA-RX-SENARY"
#define LPASS_BE_SEN_TDM_TX_0 "TDM-LPAIF_WSA-TX-SENARY"
#define LPASS_BE_QUAT_TDM_RX_0 "TDM-LPAIF_RXTX-RX-QUATERNARY"
#define LPASS_BE_QUAT_TDM_TX_0 "TDM-LPAIF_RXTX-TX-QUATERNARY"
#define LPASS_BE_QUIN_TDM_RX_0 "TDM-LPAIF_VA-RX-QUINARY"
#define LPASS_BE_QUIN_TDM_TX_0 "TDM-LPAIF_VA-TX-QUINARY"
#define LPASS_BE_USB_AUDIO_RX "USB_AUDIO-RX"
#define LPASS_BE_USB_AUDIO_TX "USB_AUDIO-TX"

View File

@@ -147,20 +147,22 @@ static void check_userspace_service_state(struct snd_soc_pcm_runtime *rtd,
static int get_intf_index(const char *stream_name)
{
if (strnstr(stream_name, "PRIMARY", strlen("PRIMARY")))
if (strnstr(stream_name, "PRIMARY", strlen(stream_name)))
return PRI_MI2S_TDM_AUXPCM;
else if (strnstr(stream_name, "SECONDARY", strlen("SECONDARY")))
else if (strnstr(stream_name, "SECONDARY", strlen(stream_name)))
return SEC_MI2S_TDM_AUXPCM;
else if (strnstr(stream_name, "TERTIARY", strlen("TERTIARY")))
else if (strnstr(stream_name, "TERTIARY", strlen(stream_name)))
return TER_MI2S_TDM_AUXPCM;
else if (strnstr(stream_name, "QUATERNARY", strlen("QUATERNARY")))
else if (strnstr(stream_name, "QUATERNARY", strlen(stream_name)))
return QUAT_MI2S_TDM_AUXPCM;
else if (strnstr(stream_name, "QUINARY", strlen("QUINARY")))
else if (strnstr(stream_name, "QUINARY", strlen(stream_name)))
return QUIN_MI2S_TDM_AUXPCM;
else if (strnstr(stream_name, "SENARY", strlen("SENARY")))
else if (strnstr(stream_name, "SENARY", strlen(stream_name)))
return SEN_MI2S_TDM_AUXPCM;
else
else {
pr_err("%s: stream name %s does not match\n", __func__, stream_name);
return -EINVAL;
}
}
int msm_common_snd_startup(struct snd_pcm_substream *substream)

View File

@@ -146,4 +146,25 @@ SND_SOC_DAILINK_DEFS(proxy_tx,
SND_SOC_DAILINK_DEFS(proxy_rx,
DAILINK_COMP_ARRAY(COMP_CPU("snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_DUMMY()),
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
DAILINK_COMP_ARRAY(COMP_PLATFORM("snd-soc-dummy")));
SND_SOC_DAILINK_DEFS(quat_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(quat_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(pri_tdm_rx_0,
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(pri_tdm_tx_0,
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")));