diff --git a/asoc/msm-pcm-routing-v2.c b/asoc/msm-pcm-routing-v2.c index 1dbba55c8494..aca4ddb43811 100644 --- a/asoc/msm-pcm-routing-v2.c +++ b/asoc/msm-pcm-routing-v2.c @@ -582,6 +582,20 @@ struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = { LPASS_BE_INT6_MI2S_RX}, { AFE_PORT_ID_INT6_MI2S_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_INT6_MI2S_TX}, + { AFE_PORT_ID_WSA_CODEC_DMA_RX_0, 0, {0}, {0}, 0, 0, 0, 0, {0}, + LPASS_BE_WSA_CDC_DMA_RX_0}, + { AFE_PORT_ID_WSA_CODEC_DMA_TX_0, 0, {0}, {0}, 0, 0, 0, 0, {0}, + LPASS_BE_WSA_CDC_DMA_TX_0}, + { AFE_PORT_ID_WSA_CODEC_DMA_RX_1, 0, {0}, {0}, 0, 0, 0, 0, {0}, + LPASS_BE_WSA_CDC_DMA_RX_1}, + { AFE_PORT_ID_WSA_CODEC_DMA_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0}, + LPASS_BE_WSA_CDC_DMA_TX_1}, + { AFE_PORT_ID_WSA_CODEC_DMA_TX_2, 0, {0}, {0}, 0, 0, 0, 0, {0}, + LPASS_BE_WSA_CDC_DMA_TX_2}, + { AFE_PORT_ID_VA_CODEC_DMA_TX_0, 0, {0}, {0}, 0, 0, 0, 0, {0}, + LPASS_BE_VA_CDC_DMA_TX_0}, + { AFE_PORT_ID_VA_CODEC_DMA_TX_1, 0, {0}, {0}, 0, 0, 0, 0, {0}, + LPASS_BE_VA_CDC_DMA_TX_1}, }; /* Track ASM playback & capture sessions of DAI @@ -2903,7 +2917,9 @@ static const char *const be_name[] = { "INT0_MI2S_RX", "INT0_MI2S_TX", "INT1_MI2S_RX", "INT1_MI2S_TX", "INT2_MI2S_RX", "INT2_MI2S_TX", "INT3_MI2S_RX", "INT3_MI2S_TX", "INT4_MI2S_RX", "INT4_MI2S_TX", "INT5_MI2S_RX", "INT5_MI2S_TX", -"INT6_MI2S_RX", "INT6_MI2S_TX" +"INT6_MI2S_RX", "INT6_MI2S_TX", "WSA_CDC_DMA_RX_0", +"WSA_CDC_DMA_TX_0", "WSA_CDC_DMA_RX_1", "WSA_CDC_DMA_TX_1", +"WSA_CDC_DMA_TX_2", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_1" }; static SOC_ENUM_SINGLE_DECL(mm1_channel_mux, @@ -3687,6 +3703,26 @@ static int msm_routing_ec_ref_rx_put(struct snd_kcontrol *kcontrol, msm_route_ec_ref_rx = 23; ec_ref_port_id = AFE_PORT_ID_HDMI_OVER_DP_RX; break; + case 24: + msm_route_ec_ref_rx = 24; + ec_ref_port_id = AFE_PORT_ID_WSA_CODEC_DMA_RX_0; + break; + case 25: + msm_route_ec_ref_rx = 25; + ec_ref_port_id = AFE_PORT_ID_WSA_CODEC_DMA_RX_1; + break; + case 26: + msm_route_ec_ref_rx = 26; + ec_ref_port_id = AFE_PORT_ID_WSA_CODEC_DMA_TX_0; + break; + case 27: + msm_route_ec_ref_rx = 27; + ec_ref_port_id = AFE_PORT_ID_WSA_CODEC_DMA_TX_1; + break; + case 28: + msm_route_ec_ref_rx = 28; + ec_ref_port_id = AFE_PORT_ID_WSA_CODEC_DMA_TX_2; + break; default: msm_route_ec_ref_rx = 0; /* NONE */ pr_err("%s EC ref rx %ld not valid\n", @@ -3709,7 +3745,10 @@ static const char *const ec_ref_rx[] = { "None", "SLIM_RX", "I2S_RX", "SLIM_5_RX", "SLIM_1_TX", "QUAT_TDM_TX_1", "QUAT_TDM_RX_0", "QUAT_TDM_RX_1", "QUAT_TDM_RX_2", "SLIM_6_RX", "TERT_MI2S_RX", "QUAT_MI2S_RX", "TERT_TDM_TX_0", "USB_AUDIO_RX", - "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX", "DISPLAY_PORT"}; + "INT0_MI2S_RX", "INT4_MI2S_RX", "INT3_MI2S_TX", "DISPLAY_PORT", + "WSA_CDC_DMA_RX_0", "WSA_CDC_DMA_RX_1", + "WSA_CDC_DMA_TX_0", "WSA_CDC_DMA_TX_1", "WSA_CDC_DMA_TX_2" +}; static const struct soc_enum msm_route_ec_ref_rx_enum[] = { SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(ec_ref_rx), ec_ref_rx), @@ -5380,6 +5419,140 @@ static const struct snd_kcontrol_new slimbus_6_rx_mixer_controls[] = { msm_routing_put_audio_mixer), }; +static const struct snd_kcontrol_new wsa_cdc_dma_rx_0_mixer_controls[] = { + SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), +}; + +static const struct snd_kcontrol_new wsa_cdc_dma_rx_1_mixer_controls[] = { + SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_RX_1, + MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), +}; + static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = { SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM, MSM_BACKEND_DAI_SLIMBUS_7_RX, @@ -8171,6 +8344,26 @@ static const struct snd_kcontrol_new mmul1_mixer_controls[] = { MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_2", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new mmul2_mixer_controls[] = { @@ -8310,6 +8503,26 @@ static const struct snd_kcontrol_new mmul2_mixer_controls[] = { MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_2", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new mmul3_mixer_controls[] = { @@ -8449,6 +8662,26 @@ static const struct snd_kcontrol_new mmul3_mixer_controls[] = { MSM_BACKEND_DAI_QUIN_TDM_TX_3, MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_2", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA3, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new mmul4_mixer_controls[] = { @@ -8584,6 +8817,26 @@ static const struct snd_kcontrol_new mmul4_mixer_controls[] = { MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_2", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new mmul5_mixer_controls[] = { @@ -8743,6 +8996,26 @@ static const struct snd_kcontrol_new mmul5_mixer_controls[] = { MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_2", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new mmul6_mixer_controls[] = { @@ -8882,6 +9155,26 @@ static const struct snd_kcontrol_new mmul6_mixer_controls[] = { MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_2", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA6, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new mmul8_mixer_controls[] = { @@ -9025,6 +9318,26 @@ static const struct snd_kcontrol_new mmul8_mixer_controls[] = { MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_2", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA8, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new mmul16_mixer_controls[] = { @@ -9168,6 +9481,26 @@ static const struct snd_kcontrol_new mmul16_mixer_controls[] = { MSM_BACKEND_DAI_QUAT_AUXPCM_TX, MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_2", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new mmul9_mixer_controls[] = { @@ -9251,6 +9584,26 @@ static const struct snd_kcontrol_new mmul9_mixer_controls[] = { MSM_BACKEND_DAI_QUIN_TDM_TX_3, MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_2", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new mmul10_mixer_controls[] = { @@ -9358,6 +9711,26 @@ static const struct snd_kcontrol_new mmul10_mixer_controls[] = { MSM_BACKEND_DAI_INT3_MI2S_TX, MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_2", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA10, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new mmul17_mixer_controls[] = { SOC_DOUBLE_EXT("SLIM_0_TX", SND_SOC_NOPM, @@ -9400,6 +9773,26 @@ static const struct snd_kcontrol_new mmul17_mixer_controls[] = { MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_2", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA17, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new mmul18_mixer_controls[] = { @@ -9443,6 +9836,26 @@ static const struct snd_kcontrol_new mmul18_mixer_controls[] = { MSM_BACKEND_DAI_INCALL_RECORD_TX, MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_2", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new mmul19_mixer_controls[] = { @@ -9486,6 +9899,26 @@ static const struct snd_kcontrol_new mmul19_mixer_controls[] = { MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_2", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new mmul20_mixer_controls[] = { @@ -9589,6 +10022,26 @@ static const struct snd_kcontrol_new mmul20_mixer_controls[] = { MSM_BACKEND_DAI_QUIN_TDM_TX_3, MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_2", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new mmul28_mixer_controls[] = { @@ -9632,7 +10085,26 @@ static const struct snd_kcontrol_new mmul28_mixer_controls[] = { MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), - + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_2", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new mmul29_mixer_controls[] = { @@ -9676,7 +10148,26 @@ static const struct snd_kcontrol_new mmul29_mixer_controls[] = { MSM_BACKEND_DAI_QUATERNARY_MI2S_TX, MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), - + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("WSA_CDC_DMA_TX_2", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, + MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new pri_rx_voice_mixer_controls[] = { @@ -10253,6 +10744,52 @@ static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = { msm_routing_put_voice_mixer), }; +static const struct snd_kcontrol_new wsa_cdc_dma_rx_0_voice_mixer_controls[] = { + SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + 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_WSA_CDC_DMA_RX_0, + MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer, + msm_routing_put_voice_mixer), +}; + +static const struct snd_kcontrol_new wsa_cdc_dma_rx_1_voice_mixer_controls[] = { + SOC_DOUBLE_EXT("Voip", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_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_WSA_CDC_DMA_RX_1, + MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer, + msm_routing_put_voice_mixer), +}; + static const struct snd_kcontrol_new stub_rx_mixer_controls[] = { SOC_DOUBLE_EXT("VoiceMMode1", SND_SOC_NOPM, MSM_BACKEND_DAI_EXTPROC_RX, @@ -10341,6 +10878,12 @@ static const struct snd_kcontrol_new tx_voicemmode1_mixer_controls[] = { SOC_DOUBLE_EXT("QUAT_TDM_TX_0_MMode1", SND_SOC_NOPM, MSM_BACKEND_DAI_QUAT_TDM_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1, 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0_MMode1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, MSM_FRONTEND_DAI_VOICEMMODE1, + 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1_MMode1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, MSM_FRONTEND_DAI_VOICEMMODE1, + 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer), }; static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = { @@ -10394,6 +10937,12 @@ static const struct snd_kcontrol_new tx_voicemmode2_mixer_controls[] = { SOC_DOUBLE_EXT("USB_AUDIO_TX_MMode2", SND_SOC_NOPM, MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOICEMMODE2, 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0_MMode2", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, MSM_FRONTEND_DAI_VOICEMMODE2, + 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1_MMode2", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, MSM_FRONTEND_DAI_VOICEMMODE2, + 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer), }; static const struct snd_kcontrol_new tx_voip_mixer_controls[] = { @@ -10461,6 +11010,12 @@ static const struct snd_kcontrol_new tx_voip_mixer_controls[] = { MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_VOIP, 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0_Voip", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, MSM_FRONTEND_DAI_VOIP, + 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1_Voip", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, MSM_FRONTEND_DAI_VOIP, + 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer), }; static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = { @@ -10540,6 +11095,14 @@ static const struct snd_kcontrol_new tx_voice_stub_mixer_controls[] = { MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICE_STUB, 1, 0, msm_routing_get_voice_stub_mixer, msm_routing_put_voice_stub_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, MSM_FRONTEND_DAI_VOICE_STUB, + 1, 0, msm_routing_get_voice_stub_mixer, + msm_routing_put_voice_stub_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, MSM_FRONTEND_DAI_VOICE_STUB, + 1, 0, msm_routing_get_voice_stub_mixer, + msm_routing_put_voice_stub_mixer), }; static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = { @@ -10603,6 +11166,14 @@ static const struct snd_kcontrol_new tx_voice2_stub_mixer_controls[] = { MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOICE2_STUB, 1, 0, msm_routing_get_voice_stub_mixer, msm_routing_put_voice_stub_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, MSM_FRONTEND_DAI_VOICE2_STUB, + 1, 0, msm_routing_get_voice_stub_mixer, + msm_routing_put_voice_stub_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, MSM_FRONTEND_DAI_VOICE2_STUB, + 1, 0, msm_routing_get_voice_stub_mixer, + msm_routing_put_voice_stub_mixer), }; static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = { @@ -10666,6 +11237,15 @@ static const struct snd_kcontrol_new tx_volte_stub_mixer_controls[] = { MSM_BACKEND_DAI_SLIMBUS_8_TX, MSM_FRONTEND_DAI_VOLTE_STUB, 1, 0, msm_routing_get_voice_stub_mixer, msm_routing_put_voice_stub_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, MSM_FRONTEND_DAI_VOLTE_STUB, + 1, 0, msm_routing_get_voice_stub_mixer, + msm_routing_put_voice_stub_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, MSM_FRONTEND_DAI_VOLTE_STUB, + 1, 0, msm_routing_get_voice_stub_mixer, + msm_routing_put_voice_stub_mixer), + }; static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = { @@ -10733,6 +11313,12 @@ static const struct snd_kcontrol_new tx_qchat_mixer_controls[] = { MSM_BACKEND_DAI_USB_TX, MSM_FRONTEND_DAI_QCHAT, 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_0_QCHAT", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, MSM_FRONTEND_DAI_QCHAT, + 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer), + SOC_DOUBLE_EXT("VA_CDC_DMA_TX_1_QCHAT", SND_SOC_NOPM, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, MSM_FRONTEND_DAI_QCHAT, + 1, 0, msm_routing_get_voice_mixer, msm_routing_put_voice_mixer), }; static const struct snd_kcontrol_new int0_mi2s_rx_port_mixer_controls[] = { @@ -14775,6 +15361,14 @@ static const char * const slim0_rx_vi_fb_tx_rch_mux_text[] = { "ZERO", "SLIM4_TX" }; +static const char * const wsa_rx_0_vi_fb_tx_lch_mux_text[] = { + "ZERO", "WSA_CDC_DMA_TX_0" +}; + +static const char * const wsa_rx_0_vi_fb_tx_rch_mux_text[] = { + "ZERO", "WSA_CDC_DMA_TX_0" +}; + static const char * const mi2s_rx_vi_fb_tx_mux_text[] = { "ZERO", "SENARY_TX" }; @@ -14795,6 +15389,15 @@ static const int const slim0_rx_vi_fb_tx_rch_value[] = { MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SLIMBUS_4_TX }; +static const int const wsa_rx_0_vi_fb_tx_lch_value[] = { + MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0 +}; + +static const int const wsa_rx_0_vi_fb_tx_rch_value[] = { + MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0 +}; + + static const int const mi2s_rx_vi_fb_tx_value[] = { MSM_BACKEND_DAI_MAX, MSM_BACKEND_DAI_SENARY_MI2S_TX }; @@ -14817,6 +15420,16 @@ static const struct soc_enum slim0_rx_vi_fb_rch_mux_enum = ARRAY_SIZE(slim0_rx_vi_fb_tx_rch_mux_text), slim0_rx_vi_fb_tx_rch_mux_text, slim0_rx_vi_fb_tx_rch_value); +static const struct soc_enum wsa_rx_0_vi_fb_lch_mux_enum = + SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_WSA_CDC_DMA_RX_0, 0, 0, + ARRAY_SIZE(wsa_rx_0_vi_fb_tx_lch_mux_text), + wsa_rx_0_vi_fb_tx_lch_mux_text, wsa_rx_0_vi_fb_tx_lch_value); + +static const struct soc_enum wsa_rx_0_vi_fb_rch_mux_enum = + SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_WSA_CDC_DMA_RX_0, 0, 0, + ARRAY_SIZE(wsa_rx_0_vi_fb_tx_rch_mux_text), + wsa_rx_0_vi_fb_tx_rch_mux_text, wsa_rx_0_vi_fb_tx_rch_value); + static const struct soc_enum mi2s_rx_vi_fb_mux_enum = SOC_VALUE_ENUM_DOUBLE(0, MSM_BACKEND_DAI_PRI_MI2S_RX, 0, 0, ARRAY_SIZE(mi2s_rx_vi_fb_tx_mux_text), @@ -14844,6 +15457,16 @@ static const struct snd_kcontrol_new slim0_rx_vi_fb_rch_mux = slim0_rx_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port, spkr_prot_put_vi_rch_port); +static const struct snd_kcontrol_new wsa_rx_0_vi_fb_lch_mux = + SOC_DAPM_ENUM_EXT("WSA_RX_0_VI_FB_LCH_MUX", + wsa_rx_0_vi_fb_lch_mux_enum, spkr_prot_get_vi_lch_port, + spkr_prot_put_vi_lch_port); + +static const struct snd_kcontrol_new wsa_rx_0_vi_fb_rch_mux = + SOC_DAPM_ENUM_EXT("WSA_RX_0_VI_FB_RCH_MUX", + wsa_rx_0_vi_fb_rch_mux_enum, spkr_prot_get_vi_rch_port, + spkr_prot_put_vi_rch_port); + static const struct snd_kcontrol_new mi2s_rx_vi_fb_mux = SOC_DAPM_ENUM_EXT("PRI_MI2S_RX_VI_FB_MUX", mi2s_rx_vi_fb_mux_enum, spkr_prot_get_vi_lch_port, @@ -15503,6 +16126,20 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = { 0, 0, 0, 0), SND_SOC_DAPM_AIF_IN("QUIN_TDM_TX_7", "Quinary TDM7 Capture", 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", + 0, 0, 0, 0), + SND_SOC_DAPM_AIF_OUT("WSA_CDC_DMA_RX_1", "WSA CDC DMA1 Playback", + 0, 0, 0, 0), + SND_SOC_DAPM_AIF_IN("WSA_CDC_DMA_TX_1", "WSA CDC DMA1 Capture", + 0, 0, 0, 0), + SND_SOC_DAPM_AIF_IN("WSA_CDC_DMA_TX_2", "WSA CDC DMA2 Capture", + 0, 0, 0, 0), + SND_SOC_DAPM_AIF_IN("VA_CDC_DMA_TX_0", "VA CDC DMA0 Capture", + 0, 0, 0, 0), + SND_SOC_DAPM_AIF_IN("VA_CDC_DMA_TX_1", "VA CDC DMA1 Capture", + 0, 0, 0, 0), /* incall */ SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback", 0, 0, 0, 0), @@ -15732,6 +16369,12 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = { SND_SOC_DAPM_MIXER("QUIN_TDM_RX_3 Audio Mixer", SND_SOC_NOPM, 0, 0, quin_tdm_rx_3_mixer_controls, ARRAY_SIZE(quin_tdm_rx_3_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)), + SND_SOC_DAPM_MIXER("WSA_CDC_DMA_RX_1 Audio Mixer", SND_SOC_NOPM, 0, 0, + wsa_cdc_dma_rx_1_mixer_controls, + ARRAY_SIZE(wsa_cdc_dma_rx_1_mixer_controls)), SND_SOC_DAPM_MIXER("MultiMedia1 Mixer", SND_SOC_NOPM, 0, 0, mmul1_mixer_controls, ARRAY_SIZE(mmul1_mixer_controls)), SND_SOC_DAPM_MIXER("MultiMedia2 Mixer", SND_SOC_NOPM, 0, 0, @@ -16083,6 +16726,10 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = { &slim0_rx_vi_fb_lch_mux), SND_SOC_DAPM_MUX("SLIM0_RX_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0, &slim0_rx_vi_fb_rch_mux), + SND_SOC_DAPM_MUX("WSA_RX_0_VI_FB_LCH_MUX", SND_SOC_NOPM, 0, 0, + &wsa_rx_0_vi_fb_lch_mux), + SND_SOC_DAPM_MUX("WSA_RX_0_VI_FB_RCH_MUX", SND_SOC_NOPM, 0, 0, + &wsa_rx_0_vi_fb_rch_mux), SND_SOC_DAPM_MUX("PRI_MI2S_RX_VI_FB_MUX", SND_SOC_NOPM, 0, 0, &mi2s_rx_vi_fb_mux), SND_SOC_DAPM_MUX("INT4_MI2S_RX_VI_FB_MONO_CH_MUX", SND_SOC_NOPM, 0, 0, @@ -16215,6 +16862,42 @@ static const struct snd_soc_dapm_route intercon[] = { {"SLIMBUS_5_RX Audio Mixer", "MultiMedia16", "MM_DL16"}, {"SLIMBUS_5_RX", NULL, "SLIMBUS_5_RX Audio Mixer"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia2", "MM_DL2"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia3", "MM_DL3"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia4", "MM_DL4"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia5", "MM_DL5"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia6", "MM_DL6"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia7", "MM_DL7"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia8", "MM_DL8"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia9", "MM_DL9"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia10", "MM_DL10"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia11", "MM_DL11"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia12", "MM_DL12"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia13", "MM_DL13"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia14", "MM_DL14"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"}, + {"WSA_CDC_DMA_RX_0", NULL, "WSA_CDC_DMA_RX_0 Audio Mixer"}, + + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia2", "MM_DL2"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia3", "MM_DL3"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia4", "MM_DL4"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia5", "MM_DL5"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia6", "MM_DL6"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia7", "MM_DL7"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia8", "MM_DL8"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia9", "MM_DL9"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia10", "MM_DL10"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia11", "MM_DL11"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia12", "MM_DL12"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia13", "MM_DL13"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia14", "MM_DL14"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"}, + {"WSA_CDC_DMA_RX_1", NULL, "WSA_CDC_DMA_RX_1 Audio Mixer"}, + {"HDMI Mixer", "MultiMedia1", "MM_DL1"}, {"HDMI Mixer", "MultiMedia2", "MM_DL2"}, {"HDMI Mixer", "MultiMedia3", "MM_DL3"}, @@ -17116,6 +17799,11 @@ static const struct snd_soc_dapm_route intercon[] = { {"MultiMedia1 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"MultiMedia1 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"MultiMedia1 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, + {"MultiMedia1 Mixer", "WSA_CDC_DMA_TX_0", "WSA_CDC_DMA_TX_0"}, + {"MultiMedia1 Mixer", "WSA_CDC_DMA_TX_1", "WSA_CDC_DMA_TX_1"}, + {"MultiMedia1 Mixer", "WSA_CDC_DMA_TX_2", "WSA_CDC_DMA_TX_2"}, + {"MultiMedia1 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"}, + {"MultiMedia1 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"}, {"MultiMedia2 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"}, {"MultiMedia2 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"}, @@ -17137,6 +17825,11 @@ static const struct snd_soc_dapm_route intercon[] = { {"MultiMedia2 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"MultiMedia2 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"MultiMedia2 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, + {"MultiMedia2 Mixer", "WSA_CDC_DMA_TX_0", "WSA_CDC_DMA_TX_0"}, + {"MultiMedia2 Mixer", "WSA_CDC_DMA_TX_1", "WSA_CDC_DMA_TX_1"}, + {"MultiMedia2 Mixer", "WSA_CDC_DMA_TX_2", "WSA_CDC_DMA_TX_2"}, + {"MultiMedia2 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"}, + {"MultiMedia2 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"}, {"MultiMedia3 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"}, {"MultiMedia3 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"}, @@ -17158,6 +17851,11 @@ static const struct snd_soc_dapm_route intercon[] = { {"MultiMedia3 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"MultiMedia3 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"MultiMedia3 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, + {"MultiMedia3 Mixer", "WSA_CDC_DMA_TX_0", "WSA_CDC_DMA_TX_0"}, + {"MultiMedia3 Mixer", "WSA_CDC_DMA_TX_1", "WSA_CDC_DMA_TX_1"}, + {"MultiMedia3 Mixer", "WSA_CDC_DMA_TX_2", "WSA_CDC_DMA_TX_2"}, + {"MultiMedia3 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"}, + {"MultiMedia3 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"}, {"MultiMedia4 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"}, {"MultiMedia4 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"}, @@ -17179,6 +17877,11 @@ static const struct snd_soc_dapm_route intercon[] = { {"MultiMedia4 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"MultiMedia4 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"MultiMedia4 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, + {"MultiMedia4 Mixer", "WSA_CDC_DMA_TX_0", "WSA_CDC_DMA_TX_0"}, + {"MultiMedia4 Mixer", "WSA_CDC_DMA_TX_1", "WSA_CDC_DMA_TX_1"}, + {"MultiMedia4 Mixer", "WSA_CDC_DMA_TX_2", "WSA_CDC_DMA_TX_2"}, + {"MultiMedia4 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"}, + {"MultiMedia4 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"}, {"MultiMedia5 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"}, {"MultiMedia5 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"}, @@ -17200,6 +17903,11 @@ static const struct snd_soc_dapm_route intercon[] = { {"MultiMedia5 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"MultiMedia5 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"MultiMedia5 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, + {"MultiMedia5 Mixer", "WSA_CDC_DMA_TX_0", "WSA_CDC_DMA_TX_0"}, + {"MultiMedia5 Mixer", "WSA_CDC_DMA_TX_1", "WSA_CDC_DMA_TX_1"}, + {"MultiMedia5 Mixer", "WSA_CDC_DMA_TX_2", "WSA_CDC_DMA_TX_2"}, + {"MultiMedia5 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"}, + {"MultiMedia5 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"}, {"MultiMedia6 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"}, {"MultiMedia6 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"}, @@ -17221,6 +17929,11 @@ static const struct snd_soc_dapm_route intercon[] = { {"MultiMedia6 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"MultiMedia6 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"MultiMedia6 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, + {"MultiMedia6 Mixer", "WSA_CDC_DMA_TX_0", "WSA_CDC_DMA_TX_0"}, + {"MultiMedia6 Mixer", "WSA_CDC_DMA_TX_1", "WSA_CDC_DMA_TX_1"}, + {"MultiMedia6 Mixer", "WSA_CDC_DMA_TX_2", "WSA_CDC_DMA_TX_2"}, + {"MultiMedia6 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"}, + {"MultiMedia6 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"}, {"MultiMedia8 Mixer", "PRI_TDM_TX_0", "PRI_TDM_TX_0"}, {"MultiMedia8 Mixer", "PRI_TDM_TX_1", "PRI_TDM_TX_1"}, @@ -17242,6 +17955,12 @@ static const struct snd_soc_dapm_route intercon[] = { {"MultiMedia8 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"MultiMedia8 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"MultiMedia8 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, + {"MultiMedia8 Mixer", "WSA_CDC_DMA_TX_0", "WSA_CDC_DMA_TX_0"}, + {"MultiMedia8 Mixer", "WSA_CDC_DMA_TX_1", "WSA_CDC_DMA_TX_1"}, + {"MultiMedia8 Mixer", "WSA_CDC_DMA_TX_2", "WSA_CDC_DMA_TX_2"}, + {"MultiMedia8 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"}, + {"MultiMedia8 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"}, + {"MultiMedia8 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"}, {"MultiMedia9 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"}, {"MultiMedia9 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"}, @@ -17255,6 +17974,12 @@ static const struct snd_soc_dapm_route intercon[] = { {"MultiMedia9 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"MultiMedia9 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"MultiMedia9 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, + {"MultiMedia9 Mixer", "WSA_CDC_DMA_TX_0", "WSA_CDC_DMA_TX_0"}, + {"MultiMedia9 Mixer", "WSA_CDC_DMA_TX_1", "WSA_CDC_DMA_TX_1"}, + {"MultiMedia9 Mixer", "WSA_CDC_DMA_TX_2", "WSA_CDC_DMA_TX_2"}, + {"MultiMedia9 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"}, + {"MultiMedia9 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"}, + {"MultiMedia9 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"}, {"MultiMedia10 Mixer", "TERT_TDM_TX_0", "TERT_TDM_TX_0"}, {"MultiMedia10 Mixer", "TERT_TDM_TX_1", "TERT_TDM_TX_1"}, @@ -17289,6 +18014,12 @@ static const struct snd_soc_dapm_route intercon[] = { {"MultiMedia20 Mixer", "QUIN_TDM_TX_1", "QUIN_TDM_TX_1"}, {"MultiMedia20 Mixer", "QUIN_TDM_TX_2", "QUIN_TDM_TX_2"}, {"MultiMedia20 Mixer", "QUIN_TDM_TX_3", "QUIN_TDM_TX_3"}, + {"MultiMedia20 Mixer", "WSA_CDC_DMA_TX_0", "WSA_CDC_DMA_TX_0"}, + {"MultiMedia20 Mixer", "WSA_CDC_DMA_TX_1", "WSA_CDC_DMA_TX_1"}, + {"MultiMedia20 Mixer", "WSA_CDC_DMA_TX_2", "WSA_CDC_DMA_TX_2"}, + {"MultiMedia20 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"}, + {"MultiMedia20 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"}, + {"MultiMedia20 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"}, {"MultiMedia1 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"}, {"MultiMedia2 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"}, @@ -17315,6 +18046,12 @@ static const struct snd_soc_dapm_route intercon[] = { {"MultiMedia16 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"}, {"MultiMedia16 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"}, {"MultiMedia16 Mixer", "USB_AUDIO_TX", "USB_AUDIO_TX"}, + {"MultiMedia16 Mixer", "WSA_CDC_DMA_TX_0", "WSA_CDC_DMA_TX_0"}, + {"MultiMedia16 Mixer", "WSA_CDC_DMA_TX_1", "WSA_CDC_DMA_TX_1"}, + {"MultiMedia16 Mixer", "WSA_CDC_DMA_TX_2", "WSA_CDC_DMA_TX_2"}, + {"MultiMedia16 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"}, + {"MultiMedia16 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"}, + {"MultiMedia16 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"}, {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia1", "MM_DL1"}, {"INTERNAL_BT_SCO_RX Audio Mixer", "MultiMedia2", "MM_DL2"}, @@ -18831,6 +19568,8 @@ static const struct snd_soc_dapm_route intercon[] = { {"BE_OUT", NULL, "QUIN_TDM_RX_1"}, {"BE_OUT", NULL, "QUIN_TDM_RX_2"}, {"BE_OUT", NULL, "QUIN_TDM_RX_3"}, + {"BE_OUT", NULL, "WSA_CDC_DMA_RX_0"}, + {"BE_OUT", NULL, "WSA_CDC_DMA_RX_1"}, {"PRI_I2S_TX", NULL, "BE_IN"}, {"MI2S_TX", NULL, "BE_IN"}, @@ -18871,11 +19610,15 @@ static const struct snd_soc_dapm_route intercon[] = { {"INCALL_RECORD_RX", NULL, "BE_IN"}, {"SLIM0_RX_VI_FB_LCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"}, {"SLIM0_RX_VI_FB_RCH_MUX", "SLIM4_TX", "SLIMBUS_4_TX"}, + {"WSA_RX_0_VI_FB_LCH_MUX", "WSA_CDC_DMA_TX_0", "WSA_CDC_DMA_TX_0"}, + {"WSA_RX_0_VI_FB_RCH_MUX", "WSA_CDC_DMA_TX_0", "WSA_CDC_DMA_TX_0"}, {"PRI_MI2S_RX_VI_FB_MUX", "SENARY_TX", "SENARY_TX"}, {"INT4_MI2S_RX_VI_FB_MONO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"}, {"INT4_MI2S_RX_VI_FB_STEREO_CH_MUX", "INT5_MI2S_TX", "INT5_MI2S_TX"}, {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_LCH_MUX"}, {"SLIMBUS_0_RX", NULL, "SLIM0_RX_VI_FB_RCH_MUX"}, + {"WSA_CDC_DMA_RX_0", NULL, "WSA_RX_0_VI_FB_LCH_MUX"}, + {"WSA_CDC_DMA_RX_0", NULL, "WSA_RX_0_VI_FB_RCH_MUX"}, {"PRI_MI2S_RX", NULL, "PRI_MI2S_RX_VI_FB_MUX"}, {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_MONO_CH_MUX"}, {"INT4_MI2S_RX", NULL, "INT4_MI2S_RX_VI_FB_STEREO_CH_MUX"}, @@ -18899,6 +19642,12 @@ static const struct snd_soc_dapm_route intercon[] = { {"QUIN_TDM_TX_1", NULL, "BE_IN"}, {"QUIN_TDM_TX_2", NULL, "BE_IN"}, {"QUIN_TDM_TX_3", NULL, "BE_IN"}, + {"WSA_CDC_DMA_TX_0", NULL, "BE_IN"}, + {"WSA_CDC_DMA_TX_1", NULL, "BE_IN"}, + {"WSA_CDC_DMA_TX_2", NULL, "BE_IN"}, + {"VA_CDC_DMA_TX_0", NULL, "BE_IN"}, + {"VA_CDC_DMA_TX_1", NULL, "BE_IN"}, + }; static int msm_pcm_routing_hw_params(struct snd_pcm_substream *substream, diff --git a/asoc/msm-pcm-routing-v2.h b/asoc/msm-pcm-routing-v2.h index b0026124000d..345e4d9cb98e 100644 --- a/asoc/msm-pcm-routing-v2.h +++ b/asoc/msm-pcm-routing-v2.h @@ -185,6 +185,16 @@ #define LPASS_BE_INT5_MI2S_TX "INT5_MI2S_TX" #define LPASS_BE_INT6_MI2S_RX "INT6_MI2S_RX" #define LPASS_BE_INT6_MI2S_TX "INT6_MI2S_TX" + +#define LPASS_BE_WSA_CDC_DMA_RX_0 "WSA_CDC_DMA_RX_0" +#define LPASS_BE_WSA_CDC_DMA_TX_0 "WSA_CDC_DMA_TX_0" +#define LPASS_BE_WSA_CDC_DMA_RX_1 "WSA_CDC_DMA_RX_1" +#define LPASS_BE_WSA_CDC_DMA_TX_1 "WSA_CDC_DMA_TX_1" +#define LPASS_BE_WSA_CDC_DMA_TX_2 "WSA_CDC_DMA_TX_2" +#define LPASS_BE_VA_CDC_DMA_TX_0 "VA_CDC_DMA_TX_0" +#define LPASS_BE_VA_CDC_DMA_TX_1 "VA_CDC_DMA_TX_1" + + /* For multimedia front-ends, asm session is allocated dynamically. * Hence, asm session/multimedia front-end mapping has to be maintained. * Due to this reason, additional multimedia front-end must be placed before @@ -399,6 +409,13 @@ enum { MSM_BACKEND_DAI_INT5_MI2S_TX, MSM_BACKEND_DAI_INT6_MI2S_RX, MSM_BACKEND_DAI_INT6_MI2S_TX, + MSM_BACKEND_DAI_WSA_CDC_DMA_RX_0, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_0, + MSM_BACKEND_DAI_WSA_CDC_DMA_RX_1, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_1, + MSM_BACKEND_DAI_WSA_CDC_DMA_TX_2, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_0, + MSM_BACKEND_DAI_VA_CDC_DMA_TX_1, MSM_BACKEND_DAI_MAX, };