asoc: msm-pcm-routing: add audio routes for DP MST

Add audio routes to support Display Port audio MST.
Each end device controller stream adds a route.

Change-Id: Ifb2ea38ad38efaff17e0a9502e03b5b6a0c2de45
Signed-off-by: Karthikeyan Mani <kmani@codeaurora.org>
This commit is contained in:
Karthikeyan Mani
2018-05-03 18:43:58 -07:00
parent fc1e972139
commit 5755008e6d
2 changed files with 141 additions and 1 deletions

View File

@@ -540,6 +540,8 @@ struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = {
LPASS_BE_USB_AUDIO_TX},
{ DISPLAY_PORT_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
LPASS_BE_DISPLAY_PORT},
{ DISPLAY_PORT_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
LPASS_BE_DISPLAY_PORT1},
{ AFE_PORT_ID_TERTIARY_PCM_RX, 0, {0}, {0}, 0, 0, 0, 0, {0},
LPASS_BE_TERT_AUXPCM_RX},
{ AFE_PORT_ID_TERTIARY_PCM_TX, 0, {0}, {0}, 0, 0, 0, 0, {0},
@@ -2895,7 +2897,7 @@ static const char *const be_name[] = {
"QUIN_TDM_RX_2", "QUIN_TDM_TX_2", "QUIN_TDM_RX_3", "QUIN_TDM_TX_3",
"QUIN_TDM_RX_4", "QUIN_TDM_TX_4", "QUIN_TDM_RX_5", "QUIN_TDM_TX_5",
"QUIN_TDM_RX_6", "QUIN_TDM_TX_6", "QUIN_TDM_RX_7", "QUIN_TDM_TX_7",
"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX",
"INT_BT_A2DP_RX", "USB_RX", "USB_TX", "DISPLAY_PORT_RX", "DISPLAY_PORT_RX1",
"TERT_AUXPCM_RX", "TERT_AUXPCM_TX", "QUAT_AUXPCM_RX", "QUAT_AUXPCM_TX",
"QUIN_AUXPCM_RX", "QUIN_AUXPCM_TX",
"INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX",
@@ -5186,6 +5188,73 @@ static const struct snd_kcontrol_new display_port_mixer_controls[] = {
msm_routing_put_audio_mixer),
};
static const struct snd_kcontrol_new display_port1_mixer_controls[] = {
SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
MSM_BACKEND_DAI_DISPLAY_PORT_RX_1,
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_DISPLAY_PORT_RX_1,
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_DISPLAY_PORT_RX_1,
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_DISPLAY_PORT_RX_1,
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_DISPLAY_PORT_RX_1,
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_DISPLAY_PORT_RX_1,
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_DISPLAY_PORT_RX_1,
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_DISPLAY_PORT_RX_1,
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_DISPLAY_PORT_RX_1,
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_DISPLAY_PORT_RX_1,
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_DISPLAY_PORT_RX_1,
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_DISPLAY_PORT_RX_1,
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_DISPLAY_PORT_RX_1,
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_DISPLAY_PORT_RX_1,
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_DISPLAY_PORT_RX_1,
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_DISPLAY_PORT_RX_1,
MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
msm_routing_put_audio_mixer),
};
/* incall music delivery mixer */
static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = {
SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM,
@@ -9763,6 +9832,29 @@ MSM_BACKEND_DAI_DISPLAY_PORT_RX,
msm_routing_put_voice_mixer),
};
static const struct snd_kcontrol_new display_port_rx1_voice_mixer_controls[] = {
SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
MSM_BACKEND_DAI_DISPLAY_PORT_RX_1,
MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer,
msm_routing_put_voice_mixer),
SOC_DOUBLE_EXT("DTMF", SND_SOC_NOPM,
MSM_BACKEND_DAI_DISPLAY_PORT_RX_1,
MSM_FRONTEND_DAI_DTMF_RX, 1, 0, msm_routing_get_voice_mixer,
msm_routing_put_voice_mixer),
SOC_DOUBLE_EXT("QCHAT", SND_SOC_NOPM,
MSM_BACKEND_DAI_DISPLAY_PORT_RX_1,
MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer,
msm_routing_put_voice_mixer),
SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM,
MSM_BACKEND_DAI_DISPLAY_PORT_RX_1,
MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer,
msm_routing_put_voice_mixer),
SOC_DOUBLE_EXT("VoiceMMode2", SND_SOC_NOPM,
MSM_BACKEND_DAI_DISPLAY_PORT_RX_1,
MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer,
msm_routing_put_voice_mixer),
};
static const struct snd_kcontrol_new bt_sco_rx_voice_mixer_controls[] = {
SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM,
MSM_BACKEND_DAI_INT_BT_SCO_RX,
@@ -11049,6 +11141,13 @@ static const struct snd_kcontrol_new display_port_rx_port_mixer_controls[] = {
msm_routing_put_port_mixer),
};
static const struct snd_kcontrol_new display_port_rx1_port_mixer_controls[] = {
SOC_DOUBLE_EXT("MI2S_TX", SND_SOC_NOPM,
MSM_BACKEND_DAI_DISPLAY_PORT_RX_1,
MSM_BACKEND_DAI_MI2S_TX, 1, 0, msm_routing_get_port_mixer,
msm_routing_put_port_mixer),
};
static const struct snd_kcontrol_new sec_i2s_rx_port_mixer_controls[] = {
SOC_DOUBLE_EXT("MI2S_TX", SND_SOC_NOPM,
MSM_BACKEND_DAI_SEC_I2S_RX,
@@ -15180,6 +15279,8 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
SND_SOC_DAPM_AIF_OUT("HDMI", "HDMI Playback", 0, 0, 0, 0),
SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT", "Display Port Playback",
0, 0, 0, 0),
SND_SOC_DAPM_AIF_OUT("DISPLAY_PORT1", "Display Port1 Playback",
0, 0, 0, 0),
SND_SOC_DAPM_AIF_OUT("MI2S_RX", "MI2S Playback", 0, 0, 0, 0),
SND_SOC_DAPM_AIF_OUT("QUAT_MI2S_RX", "Quaternary MI2S Playback",
0, 0, 0, 0),
@@ -15523,6 +15624,8 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
hdmi_mixer_controls, ARRAY_SIZE(hdmi_mixer_controls)),
SND_SOC_DAPM_MIXER("DISPLAY_PORT Mixer", SND_SOC_NOPM, 0, 0,
display_port_mixer_controls, ARRAY_SIZE(display_port_mixer_controls)),
SND_SOC_DAPM_MIXER("DISPLAY_PORT1 Mixer", SND_SOC_NOPM, 0, 0,
display_port1_mixer_controls, ARRAY_SIZE(display_port1_mixer_controls)),
SND_SOC_DAPM_MIXER("SPDIF_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
spdif_rx_mixer_controls, ARRAY_SIZE(spdif_rx_mixer_controls)),
SND_SOC_DAPM_MIXER("MI2S_RX Audio Mixer", SND_SOC_NOPM, 0, 0,
@@ -15845,6 +15948,9 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port Mixer",
SND_SOC_NOPM, 0, 0, display_port_rx_port_mixer_controls,
ARRAY_SIZE(display_port_rx_port_mixer_controls)),
SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX Port1 Mixer",
SND_SOC_NOPM, 0, 0, display_port_rx1_port_mixer_controls,
ARRAY_SIZE(display_port_rx1_port_mixer_controls)),
SND_SOC_DAPM_MIXER("SEC_I2S_RX Port Mixer",
SND_SOC_NOPM, 0, 0, sec_i2s_rx_port_mixer_controls,
ARRAY_SIZE(sec_i2s_rx_port_mixer_controls)),
@@ -15949,6 +16055,9 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = {
SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX_Voice Mixer",
SND_SOC_NOPM, 0, 0, display_port_rx_voice_mixer_controls,
ARRAY_SIZE(display_port_rx_voice_mixer_controls)),
SND_SOC_DAPM_MIXER("DISPLAY_PORT_RX1_Voice Mixer",
SND_SOC_NOPM, 0, 0, display_port_rx1_voice_mixer_controls,
ARRAY_SIZE(display_port_rx1_voice_mixer_controls)),
/* lsm mixer definitions */
SND_SOC_DAPM_MIXER("LSM1 Mixer", SND_SOC_NOPM, 0, 0,
lsm1_mixer_controls, ARRAY_SIZE(lsm1_mixer_controls)),
@@ -16142,6 +16251,24 @@ static const struct snd_soc_dapm_route intercon[] = {
{"DISPLAY_PORT Mixer", "MultiMedia16", "MM_DL16"},
{"DISPLAY_PORT", NULL, "DISPLAY_PORT Mixer"},
{"DISPLAY_PORT1 Mixer", "MultiMedia1", "MM_DL1"},
{"DISPLAY_PORT1 Mixer", "MultiMedia2", "MM_DL2"},
{"DISPLAY_PORT1 Mixer", "MultiMedia3", "MM_DL3"},
{"DISPLAY_PORT1 Mixer", "MultiMedia4", "MM_DL4"},
{"DISPLAY_PORT1 Mixer", "MultiMedia5", "MM_DL5"},
{"DISPLAY_PORT1 Mixer", "MultiMedia6", "MM_DL6"},
{"DISPLAY_PORT1 Mixer", "MultiMedia7", "MM_DL7"},
{"DISPLAY_PORT1 Mixer", "MultiMedia8", "MM_DL8"},
{"DISPLAY_PORT1 Mixer", "MultiMedia9", "MM_DL9"},
{"DISPLAY_PORT1 Mixer", "MultiMedia10", "MM_DL10"},
{"DISPLAY_PORT1 Mixer", "MultiMedia11", "MM_DL11"},
{"DISPLAY_PORT1 Mixer", "MultiMedia12", "MM_DL12"},
{"DISPLAY_PORT1 Mixer", "MultiMedia13", "MM_DL13"},
{"DISPLAY_PORT1 Mixer", "MultiMedia14", "MM_DL14"},
{"DISPLAY_PORT1 Mixer", "MultiMedia15", "MM_DL15"},
{"DISPLAY_PORT1 Mixer", "MultiMedia16", "MM_DL16"},
{"DISPLAY_PORT1", NULL, "DISPLAY_PORT1 Mixer"},
{"SPDIF_RX Audio Mixer", "MultiMedia1", "MM_DL1"},
{"SPDIF_RX Audio Mixer", "MultiMedia2", "MM_DL2"},
{"SPDIF_RX Audio Mixer", "MultiMedia3", "MM_DL3"},
@@ -17454,6 +17581,13 @@ static const struct snd_soc_dapm_route intercon[] = {
{"DISPLAY_PORT_RX_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
{"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX_Voice Mixer"},
{"DISPLAY_PORT_RX1_Voice Mixer", "Voip", "VOIP_DL"},
{"DISPLAY_PORT_RX1_Voice Mixer", "DTMF", "DTMF_DL_HL"},
{"DISPLAY_PORT_RX1_Voice Mixer", "QCHAT", "QCHAT_DL"},
{"DISPLAY_PORT_RX1_Voice Mixer", "VoiceMMode1", "VOICEMMODE1_DL"},
{"DISPLAY_PORT_RX1_Voice Mixer", "VoiceMMode2", "VOICEMMODE2_DL"},
{"DISPLAY_PORT1", NULL, "DISPLAY_PORT_RX1_Voice Mixer"},
{"INTERNAL_BT_SCO_RX_Voice Mixer", "Voip", "VOIP_DL"},
{"INTERNAL_BT_SCO_RX_Voice Mixer", "DTMF", "DTMF_DL_HL"},
{"INTERNAL_BT_SCO_RX_Voice Mixer", "QCHAT", "QCHAT_DL"},
@@ -18568,6 +18702,9 @@ static const struct snd_soc_dapm_route intercon[] = {
{"DISPLAY_PORT_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
{"DISPLAY_PORT", NULL, "DISPLAY_PORT_RX Port Mixer"},
{"DISPLAY_PORT_RX1 Port Mixer", "MI2S_TX", "MI2S_TX"},
{"DISPLAY_PORT1", NULL, "DISPLAY_PORT_RX1 Port Mixer"},
{"SEC_I2S_RX Port Mixer", "MI2S_TX", "MI2S_TX"},
{"SEC_I2S_RX", NULL, "SEC_I2S_RX Port Mixer"},
@@ -18643,6 +18780,7 @@ static const struct snd_soc_dapm_route intercon[] = {
{"BE_OUT", NULL, "USB_AUDIO_RX"},
{"BE_OUT", NULL, "HDMI"},
{"BE_OUT", NULL, "DISPLAY_PORT"},
{"BE_OUT", NULL, "DISPLAY_PORT1"},
{"BE_OUT", NULL, "SPDIF_RX"},
{"BE_OUT", NULL, "MI2S_RX"},
{"BE_OUT", NULL, "QUAT_MI2S_RX"},

View File

@@ -25,6 +25,7 @@
#define LPASS_BE_SLIMBUS_0_TX "SLIMBUS_0_TX"
#define LPASS_BE_HDMI "HDMI"
#define LPASS_BE_DISPLAY_PORT "DISPLAY_PORT"
#define LPASS_BE_DISPLAY_PORT1 "DISPLAY_PORT1"
#define LPASS_BE_INT_BT_SCO_RX "INT_BT_SCO_RX"
#define LPASS_BE_INT_BT_SCO_TX "INT_BT_SCO_TX"
#define LPASS_BE_INT_BT_A2DP_RX "INT_BT_A2DP_RX"
@@ -377,6 +378,7 @@ enum {
MSM_BACKEND_DAI_USB_RX,
MSM_BACKEND_DAI_USB_TX,
MSM_BACKEND_DAI_DISPLAY_PORT_RX,
MSM_BACKEND_DAI_DISPLAY_PORT_RX_1,
MSM_BACKEND_DAI_TERT_AUXPCM_RX,
MSM_BACKEND_DAI_TERT_AUXPCM_TX,
MSM_BACKEND_DAI_QUAT_AUXPCM_RX,