lahaina: add mi2s and tdm dai-links
Change-Id: I3d541b110cc849b6e323f4df55be208e153d65eb Signed-off-by: Phani Kumar Uppalapati <phaniu@codeaurora.org>
This commit is contained in:
@@ -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,
|
||||
|
@@ -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"
|
||||
|
@@ -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)
|
||||
|
@@ -147,3 +147,24 @@ 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")));
|
||||
|
||||
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")));
|
||||
|
||||
|
Reference in New Issue
Block a user