From 5755008e6db86a304b0ea27fff84a50f5c7f8b59 Mon Sep 17 00:00:00 2001 From: Karthikeyan Mani Date: Thu, 3 May 2018 18:43:58 -0700 Subject: [PATCH] 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 --- asoc/msm-pcm-routing-v2.c | 140 +++++++++++++++++++++++++++++++++++++- asoc/msm-pcm-routing-v2.h | 2 + 2 files changed, 141 insertions(+), 1 deletion(-) diff --git a/asoc/msm-pcm-routing-v2.c b/asoc/msm-pcm-routing-v2.c index e8eb7ce93885..1dbba55c8494 100644 --- a/asoc/msm-pcm-routing-v2.c +++ b/asoc/msm-pcm-routing-v2.c @@ -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"}, diff --git a/asoc/msm-pcm-routing-v2.h b/asoc/msm-pcm-routing-v2.h index 19c710c4b4a5..b0026124000d 100644 --- a/asoc/msm-pcm-routing-v2.h +++ b/asoc/msm-pcm-routing-v2.h @@ -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,