Merge "asoc: Add support for META MI2S ports"

This commit is contained in:
qctecmdr
2019-09-04 03:32:55 -07:00
committed by Gerrit - the friendly Code Review server
5 changed files with 986 additions and 5 deletions

View File

@@ -689,6 +689,10 @@ struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = {
{ SLIMBUS_9_RX, 0, {0}, {0}, 0, 0, 0, 0, LPASS_BE_SLIMBUS_9_RX},
{ SLIMBUS_9_TX, 0, {0}, {0}, 0, 0, 0, 0, LPASS_BE_SLIMBUS_9_TX},
{ AFE_LOOPBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, LPASS_BE_AFE_LOOPBACK_TX},
{ AFE_PORT_ID_PRIMARY_META_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0,
LPASS_BE_PRI_META_MI2S_RX},
{ AFE_PORT_ID_SECONDARY_META_MI2S_RX, 0, {0}, {0}, 0, 0, 0, 0,
LPASS_BE_SEC_META_MI2S_RX},
};
/* Track ASM playback & capture sessions of DAI
@@ -3435,7 +3439,8 @@ static const char *const be_name[] = {
"RX_CDC_DMA_RX_4", "TX_CDC_DMA_TX_4", "RX_CDC_DMA_RX_5", "TX_CDC_DMA_TX_5",
"RX_CDC_DMA_RX_6", "RX_CDC_DMA_RX_7",
"PRI_SPDIF_TX", "SEC_SPDIF_RX", "SEC_SPDIF_TX",
"SLIM_9_RX", "SLIM_9_TX", "AFE_LOOPBACK_TX"
"SLIM_9_RX", "SLIM_9_TX", "AFE_LOOPBACK_TX", "PRI_META_MI2S_RX",
"SEC_META_MI2S_RX"
};
static SOC_ENUM_SINGLE_DECL(mm1_channel_mux,
@@ -7143,6 +7148,189 @@ static const struct snd_kcontrol_new int4_mi2s_rx_mixer_controls[] = {
msm_routing_put_audio_mixer),
};
static const struct snd_kcontrol_new pri_meta_mi2s_rx_mixer_controls[] = {
SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia26", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA26, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
MSM_BACKEND_DAI_PRI_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
};
static const struct snd_kcontrol_new sec_meta_mi2s_rx_mixer_controls[] = {
SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia2", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia3", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia4", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia5", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia6", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia8", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia10", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia11", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA11, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia12", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA12, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia13", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA13, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia14", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA14, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia15", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA15, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia16", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia17", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia26", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA26, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_META_MI2S_RX,
MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
};
static const struct snd_kcontrol_new hdmi_mixer_controls[] = {
SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
MSM_BACKEND_DAI_HDMI_RX,
@@ -23169,6 +23357,10 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
0, 0, 0, 0),
SND_SOC_DAPM_AIF_IN("SEN_TDM_TX_7", "Senary TDM7 Capture",
0, 0, 0, 0),
SND_SOC_DAPM_AIF_OUT("PRI_META_MI2S_RX", "Primary META MI2S Playback",
0, 0, 0, 0),
SND_SOC_DAPM_AIF_OUT("SEC_META_MI2S_RX", "Secondary META MI2S Playback",
0, 0, 0, 0),
SND_SOC_DAPM_AIF_OUT("WSA_CDC_DMA_RX_0", "WSA CDC DMA0 Playback",
0, 0, 0, 0),
SND_SOC_DAPM_AIF_IN("WSA_CDC_DMA_TX_0", "WSA CDC DMA0 Capture",
@@ -23479,6 +23671,12 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
SND_SOC_DAPM_MIXER("SEN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0,
sen_tdm_rx_3_mixer_controls,
ARRAY_SIZE(sen_tdm_rx_3_mixer_controls)),
SND_SOC_DAPM_MIXER("PRI_META_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
pri_meta_mi2s_rx_mixer_controls,
ARRAY_SIZE(pri_meta_mi2s_rx_mixer_controls)),
SND_SOC_DAPM_MIXER("SEC_META_MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
sec_meta_mi2s_rx_mixer_controls,
ARRAY_SIZE(sec_meta_mi2s_rx_mixer_controls)),
SND_SOC_DAPM_MIXER("WSA_CDC_DMA_RX_0 Audio Mixer", SND_SOC_NOPM, 0, 0,
wsa_cdc_dma_rx_0_mixer_controls,
ARRAY_SIZE(wsa_cdc_dma_rx_0_mixer_controls)),
@@ -24702,6 +24900,44 @@ static const struct snd_soc_dapm_route intercon[] = {
{"SEN_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
{"SEN_MI2S_RX", NULL, "SEN_MI2S_RX Audio Mixer"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
{"PRI_META_MI2S_RX Audio Mixer", "MultiMedia26", "MM_DL26"},
{"PRI_META_MI2S_RX", NULL, "PRI_META_MI2S_RX Audio Mixer"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia4", "MM_DL4"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia5", "MM_DL5"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia6", "MM_DL6"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia7", "MM_DL7"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia8", "MM_DL8"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia9", "MM_DL9"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia10", "MM_DL10"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia11", "MM_DL11"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia12", "MM_DL12"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia13", "MM_DL13"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia14", "MM_DL14"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia15", "MM_DL15"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia16", "MM_DL16"},
{"SEC_META_MI2S_RX Audio Mixer", "MultiMedia26", "MM_DL26"},
{"SEC_META_MI2S_RX", NULL, "SEC_META_MI2S_RX Audio Mixer"},
{"PRI_TDM_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"},
{"PRI_TDM_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"},
{"PRI_TDM_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"},