diff --git a/asoc/msm-dai-fe.c b/asoc/msm-dai-fe.c index 29e15dda17cb..c711d2374181 100644 --- a/asoc/msm-dai-fe.c +++ b/asoc/msm-dai-fe.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. +/* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. */ @@ -2919,6 +2919,44 @@ static struct snd_soc_dai_driver msm_fe_dais[] = { .name = "MultiMedia30", .probe = fe_dai_probe, }, + { + .playback = { + .stream_name = "MultiMedia31 Playback", + .aif_name = "MM_DL31", + .rates = (SNDRV_PCM_RATE_8000_384000| + SNDRV_PCM_RATE_KNOT), + .formats = (SNDRV_PCM_FMTBIT_S16_LE | + SNDRV_PCM_FMTBIT_S24_LE | + SNDRV_PCM_FMTBIT_S24_3LE | + SNDRV_PCM_FMTBIT_S32_LE), + .channels_min = 1, + .channels_max = 32, + .rate_min = 8000, + .rate_max = 384000, + }, + .ops = &msm_fe_Multimedia_dai_ops, + .name = "MultiMedia31", + .probe = fe_dai_probe, + }, + { + .playback = { + .stream_name = "MultiMedia32 Playback", + .aif_name = "MM_DL32", + .rates = (SNDRV_PCM_RATE_8000_384000| + SNDRV_PCM_RATE_KNOT), + .formats = (SNDRV_PCM_FMTBIT_S16_LE | + SNDRV_PCM_FMTBIT_S24_LE | + SNDRV_PCM_FMTBIT_S24_3LE | + SNDRV_PCM_FMTBIT_S32_LE), + .channels_min = 1, + .channels_max = 32, + .rate_min = 8000, + .rate_max = 384000, + }, + .ops = &msm_fe_Multimedia_dai_ops, + .name = "MultiMedia32", + .probe = fe_dai_probe, + }, }; static int msm_fe_dai_dev_probe(struct platform_device *pdev) diff --git a/asoc/msm-pcm-routing-v2.c b/asoc/msm-pcm-routing-v2.c index 63fc72c70ce4..d8ccfcad8801 100644 --- a/asoc/msm-pcm-routing-v2.c +++ b/asoc/msm-pcm-routing-v2.c @@ -7891,6 +7891,15 @@ static const struct snd_kcontrol_new wsa_cdc_dma_rx_0_mixer_controls[] = { MSM_BACKEND_DAI_WSA_CDC_DMA_RX_0, MSM_FRONTEND_DAI_MULTIMEDIA26, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia31", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_RX_0, + MSM_FRONTEND_DAI_MULTIMEDIA31, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia32", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_RX_0, + MSM_FRONTEND_DAI_MULTIMEDIA32, 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[] = { @@ -7962,6 +7971,14 @@ static const struct snd_kcontrol_new wsa_cdc_dma_rx_1_mixer_controls[] = { MSM_BACKEND_DAI_WSA_CDC_DMA_RX_1, MSM_FRONTEND_DAI_MULTIMEDIA26, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia31", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_RX_1, + MSM_FRONTEND_DAI_MULTIMEDIA31, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia32", SND_SOC_NOPM, + MSM_BACKEND_DAI_WSA_CDC_DMA_RX_1, + MSM_FRONTEND_DAI_MULTIMEDIA32, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new rx_cdc_dma_rx_0_mixer_controls[] = { @@ -8033,6 +8050,14 @@ static const struct snd_kcontrol_new rx_cdc_dma_rx_0_mixer_controls[] = { MSM_BACKEND_DAI_RX_CDC_DMA_RX_0, MSM_FRONTEND_DAI_MULTIMEDIA26, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia31", SND_SOC_NOPM, + MSM_BACKEND_DAI_RX_CDC_DMA_RX_0, + MSM_FRONTEND_DAI_MULTIMEDIA31, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia32", SND_SOC_NOPM, + MSM_BACKEND_DAI_RX_CDC_DMA_RX_0, + MSM_FRONTEND_DAI_MULTIMEDIA32, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new rx_cdc_dma_rx_1_mixer_controls[] = { @@ -8104,6 +8129,14 @@ static const struct snd_kcontrol_new rx_cdc_dma_rx_1_mixer_controls[] = { MSM_BACKEND_DAI_RX_CDC_DMA_RX_1, MSM_FRONTEND_DAI_MULTIMEDIA26, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia31", SND_SOC_NOPM, + MSM_BACKEND_DAI_RX_CDC_DMA_RX_1, + MSM_FRONTEND_DAI_MULTIMEDIA31, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia32", SND_SOC_NOPM, + MSM_BACKEND_DAI_RX_CDC_DMA_RX_1, + MSM_FRONTEND_DAI_MULTIMEDIA32, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new rx_cdc_dma_rx_2_mixer_controls[] = { @@ -8175,6 +8208,14 @@ static const struct snd_kcontrol_new rx_cdc_dma_rx_2_mixer_controls[] = { MSM_BACKEND_DAI_RX_CDC_DMA_RX_2, MSM_FRONTEND_DAI_MULTIMEDIA26, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia31", SND_SOC_NOPM, + MSM_BACKEND_DAI_RX_CDC_DMA_RX_2, + MSM_FRONTEND_DAI_MULTIMEDIA31, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia32", SND_SOC_NOPM, + MSM_BACKEND_DAI_RX_CDC_DMA_RX_2, + MSM_FRONTEND_DAI_MULTIMEDIA32, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new rx_cdc_dma_rx_3_mixer_controls[] = { @@ -8246,6 +8287,14 @@ static const struct snd_kcontrol_new rx_cdc_dma_rx_3_mixer_controls[] = { MSM_BACKEND_DAI_RX_CDC_DMA_RX_3, MSM_FRONTEND_DAI_MULTIMEDIA26, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia31", SND_SOC_NOPM, + MSM_BACKEND_DAI_RX_CDC_DMA_RX_3, + MSM_FRONTEND_DAI_MULTIMEDIA31, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia32", SND_SOC_NOPM, + MSM_BACKEND_DAI_RX_CDC_DMA_RX_3, + MSM_FRONTEND_DAI_MULTIMEDIA32, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new rx_cdc_dma_rx_4_mixer_controls[] = { @@ -8317,6 +8366,14 @@ static const struct snd_kcontrol_new rx_cdc_dma_rx_4_mixer_controls[] = { MSM_BACKEND_DAI_RX_CDC_DMA_RX_4, MSM_FRONTEND_DAI_MULTIMEDIA26, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia31", SND_SOC_NOPM, + MSM_BACKEND_DAI_RX_CDC_DMA_RX_4, + MSM_FRONTEND_DAI_MULTIMEDIA31, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia32", SND_SOC_NOPM, + MSM_BACKEND_DAI_RX_CDC_DMA_RX_4, + MSM_FRONTEND_DAI_MULTIMEDIA32, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new rx_cdc_dma_rx_5_mixer_controls[] = { @@ -8388,6 +8445,14 @@ static const struct snd_kcontrol_new rx_cdc_dma_rx_5_mixer_controls[] = { MSM_BACKEND_DAI_RX_CDC_DMA_RX_5, MSM_FRONTEND_DAI_MULTIMEDIA26, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia31", SND_SOC_NOPM, + MSM_BACKEND_DAI_RX_CDC_DMA_RX_5, + MSM_FRONTEND_DAI_MULTIMEDIA31, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia32", SND_SOC_NOPM, + MSM_BACKEND_DAI_RX_CDC_DMA_RX_5, + MSM_FRONTEND_DAI_MULTIMEDIA32, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new rx_cdc_dma_rx_6_mixer_controls[] = { @@ -8459,6 +8524,15 @@ static const struct snd_kcontrol_new rx_cdc_dma_rx_6_mixer_controls[] = { MSM_BACKEND_DAI_RX_CDC_DMA_RX_6, MSM_FRONTEND_DAI_MULTIMEDIA26, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia31", SND_SOC_NOPM, + MSM_BACKEND_DAI_RX_CDC_DMA_RX_6, + MSM_FRONTEND_DAI_MULTIMEDIA31, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia32", SND_SOC_NOPM, + MSM_BACKEND_DAI_RX_CDC_DMA_RX_6, + MSM_FRONTEND_DAI_MULTIMEDIA32, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + }; static const struct snd_kcontrol_new rx_cdc_dma_rx_7_mixer_controls[] = { @@ -8530,6 +8604,14 @@ static const struct snd_kcontrol_new rx_cdc_dma_rx_7_mixer_controls[] = { MSM_BACKEND_DAI_RX_CDC_DMA_RX_7, MSM_FRONTEND_DAI_MULTIMEDIA26, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia31", SND_SOC_NOPM, + MSM_BACKEND_DAI_RX_CDC_DMA_RX_7, + MSM_FRONTEND_DAI_MULTIMEDIA31, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia32", SND_SOC_NOPM, + MSM_BACKEND_DAI_RX_CDC_DMA_RX_7, + MSM_FRONTEND_DAI_MULTIMEDIA32, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), }; static const struct snd_kcontrol_new slimbus_7_rx_mixer_controls[] = { @@ -23652,6 +23734,8 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = { SND_SOC_DAPM_AIF_IN("MM_DL24", "MultiMedia24 Playback", 0, 0, 0, 0), SND_SOC_DAPM_AIF_IN("MM_DL25", "MultiMedia25 Playback", 0, 0, 0, 0), SND_SOC_DAPM_AIF_IN("MM_DL26", "MultiMedia26 Playback", 0, 0, 0, 0), + SND_SOC_DAPM_AIF_IN("MM_DL31", "MultiMedia31 Playback", 0, 0, 0, 0), + SND_SOC_DAPM_AIF_IN("MM_DL32", "MultiMedia32 Playback", 0, 0, 0, 0), SND_SOC_DAPM_AIF_IN("VOIP_DL", "VoIP Playback", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("MM_UL1", "MultiMedia1 Capture", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("MM_UL2", "MultiMedia2 Capture", 0, 0, 0, 0), @@ -25345,6 +25429,8 @@ static const struct snd_soc_dapm_route intercon[] = { {"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 Audio Mixer", "MultiMedia26", "MM_DL26"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia31", "MM_DL31"}, + {"WSA_CDC_DMA_RX_0 Audio Mixer", "MultiMedia32", "MM_DL32"}, {"WSA_CDC_DMA_RX_0", NULL, "WSA_CDC_DMA_RX_0 Audio Mixer"}, {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"}, @@ -25364,6 +25450,8 @@ static const struct snd_soc_dapm_route intercon[] = { {"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 Audio Mixer", "MultiMedia26", "MM_DL26"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia31", "MM_DL31"}, + {"WSA_CDC_DMA_RX_1 Audio Mixer", "MultiMedia32", "MM_DL32"}, {"WSA_CDC_DMA_RX_1", NULL, "WSA_CDC_DMA_RX_1 Audio Mixer"}, {"RX_CDC_DMA_RX_0 Audio Mixer", "MultiMedia1", "MM_DL1"}, @@ -25383,6 +25471,8 @@ static const struct snd_soc_dapm_route intercon[] = { {"RX_CDC_DMA_RX_0 Audio Mixer", "MultiMedia15", "MM_DL15"}, {"RX_CDC_DMA_RX_0 Audio Mixer", "MultiMedia16", "MM_DL16"}, {"RX_CDC_DMA_RX_0 Audio Mixer", "MultiMedia26", "MM_DL26"}, + {"RX_CDC_DMA_RX_0 Audio Mixer", "MultiMedia31", "MM_DL31"}, + {"RX_CDC_DMA_RX_0 Audio Mixer", "MultiMedia32", "MM_DL32"}, {"RX_CDC_DMA_RX_0", NULL, "RX_CDC_DMA_RX_0 Audio Mixer"}, {"RX_CDC_DMA_RX_1 Audio Mixer", "MultiMedia1", "MM_DL1"}, @@ -25402,6 +25492,8 @@ static const struct snd_soc_dapm_route intercon[] = { {"RX_CDC_DMA_RX_1 Audio Mixer", "MultiMedia15", "MM_DL15"}, {"RX_CDC_DMA_RX_1 Audio Mixer", "MultiMedia16", "MM_DL16"}, {"RX_CDC_DMA_RX_1 Audio Mixer", "MultiMedia26", "MM_DL26"}, + {"RX_CDC_DMA_RX_1 Audio Mixer", "MultiMedia31", "MM_DL31"}, + {"RX_CDC_DMA_RX_1 Audio Mixer", "MultiMedia32", "MM_DL32"}, {"RX_CDC_DMA_RX_1", NULL, "RX_CDC_DMA_RX_1 Audio Mixer"}, {"RX_CDC_DMA_RX_2 Audio Mixer", "MultiMedia1", "MM_DL1"}, @@ -25421,6 +25513,8 @@ static const struct snd_soc_dapm_route intercon[] = { {"RX_CDC_DMA_RX_2 Audio Mixer", "MultiMedia15", "MM_DL15"}, {"RX_CDC_DMA_RX_2 Audio Mixer", "MultiMedia16", "MM_DL16"}, {"RX_CDC_DMA_RX_2 Audio Mixer", "MultiMedia26", "MM_DL26"}, + {"RX_CDC_DMA_RX_2 Audio Mixer", "MultiMedia31", "MM_DL31"}, + {"RX_CDC_DMA_RX_2 Audio Mixer", "MultiMedia32", "MM_DL32"}, {"RX_CDC_DMA_RX_2", NULL, "RX_CDC_DMA_RX_2 Audio Mixer"}, {"RX_CDC_DMA_RX_3 Audio Mixer", "MultiMedia1", "MM_DL1"}, @@ -25440,6 +25534,8 @@ static const struct snd_soc_dapm_route intercon[] = { {"RX_CDC_DMA_RX_3 Audio Mixer", "MultiMedia15", "MM_DL15"}, {"RX_CDC_DMA_RX_3 Audio Mixer", "MultiMedia16", "MM_DL16"}, {"RX_CDC_DMA_RX_3 Audio Mixer", "MultiMedia26", "MM_DL26"}, + {"RX_CDC_DMA_RX_3 Audio Mixer", "MultiMedia31", "MM_DL31"}, + {"RX_CDC_DMA_RX_3 Audio Mixer", "MultiMedia32", "MM_DL32"}, {"RX_CDC_DMA_RX_3", NULL, "RX_CDC_DMA_RX_3 Audio Mixer"}, {"RX_CDC_DMA_RX_4 Audio Mixer", "MultiMedia1", "MM_DL1"}, @@ -25459,6 +25555,8 @@ static const struct snd_soc_dapm_route intercon[] = { {"RX_CDC_DMA_RX_4 Audio Mixer", "MultiMedia15", "MM_DL15"}, {"RX_CDC_DMA_RX_4 Audio Mixer", "MultiMedia16", "MM_DL16"}, {"RX_CDC_DMA_RX_4 Audio Mixer", "MultiMedia26", "MM_DL26"}, + {"RX_CDC_DMA_RX_4 Audio Mixer", "MultiMedia31", "MM_DL31"}, + {"RX_CDC_DMA_RX_4 Audio Mixer", "MultiMedia32", "MM_DL32"}, {"RX_CDC_DMA_RX_4", NULL, "RX_CDC_DMA_RX_4 Audio Mixer"}, {"RX_CDC_DMA_RX_5 Audio Mixer", "MultiMedia1", "MM_DL1"}, @@ -25478,6 +25576,8 @@ static const struct snd_soc_dapm_route intercon[] = { {"RX_CDC_DMA_RX_5 Audio Mixer", "MultiMedia15", "MM_DL15"}, {"RX_CDC_DMA_RX_5 Audio Mixer", "MultiMedia16", "MM_DL16"}, {"RX_CDC_DMA_RX_5 Audio Mixer", "MultiMedia26", "MM_DL26"}, + {"RX_CDC_DMA_RX_5 Audio Mixer", "MultiMedia31", "MM_DL31"}, + {"RX_CDC_DMA_RX_5 Audio Mixer", "MultiMedia32", "MM_DL32"}, {"RX_CDC_DMA_RX_5", NULL, "RX_CDC_DMA_RX_5 Audio Mixer"}, {"RX_CDC_DMA_RX_6 Audio Mixer", "MultiMedia1", "MM_DL1"}, @@ -25497,6 +25597,8 @@ static const struct snd_soc_dapm_route intercon[] = { {"RX_CDC_DMA_RX_6 Audio Mixer", "MultiMedia15", "MM_DL15"}, {"RX_CDC_DMA_RX_6 Audio Mixer", "MultiMedia16", "MM_DL16"}, {"RX_CDC_DMA_RX_6 Audio Mixer", "MultiMedia26", "MM_DL26"}, + {"RX_CDC_DMA_RX_6 Audio Mixer", "MultiMedia31", "MM_DL31"}, + {"RX_CDC_DMA_RX_6 Audio Mixer", "MultiMedia32", "MM_DL32"}, {"RX_CDC_DMA_RX_6", NULL, "RX_CDC_DMA_RX_6 Audio Mixer"}, {"RX_CDC_DMA_RX_7 Audio Mixer", "MultiMedia1", "MM_DL1"}, @@ -25516,6 +25618,8 @@ static const struct snd_soc_dapm_route intercon[] = { {"RX_CDC_DMA_RX_7 Audio Mixer", "MultiMedia15", "MM_DL15"}, {"RX_CDC_DMA_RX_7 Audio Mixer", "MultiMedia16", "MM_DL16"}, {"RX_CDC_DMA_RX_7 Audio Mixer", "MultiMedia26", "MM_DL26"}, + {"RX_CDC_DMA_RX_7 Audio Mixer", "MultiMedia31", "MM_DL31"}, + {"RX_CDC_DMA_RX_7 Audio Mixer", "MultiMedia32", "MM_DL32"}, {"RX_CDC_DMA_RX_7", NULL, "RX_CDC_DMA_RX_7 Audio Mixer"}, {"HDMI Mixer", "MultiMedia1", "MM_DL1"}, diff --git a/asoc/msm-pcm-routing-v2.h b/asoc/msm-pcm-routing-v2.h index 7f6d036b30ab..81ed42f792f6 100644 --- a/asoc/msm-pcm-routing-v2.h +++ b/asoc/msm-pcm-routing-v2.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: GPL-2.0-only */ -/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. +/* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved. */ #ifndef _MSM_PCM_ROUTING_H #define _MSM_PCM_ROUTING_H @@ -268,6 +268,8 @@ enum { MSM_FRONTEND_DAI_MULTIMEDIA28, MSM_FRONTEND_DAI_MULTIMEDIA29, MSM_FRONTEND_DAI_MULTIMEDIA30, + MSM_FRONTEND_DAI_MULTIMEDIA31, + MSM_FRONTEND_DAI_MULTIMEDIA32, MSM_FRONTEND_DAI_VOIP, MSM_FRONTEND_DAI_AFE_RX, MSM_FRONTEND_DAI_AFE_TX, @@ -289,8 +291,8 @@ enum { MSM_FRONTEND_DAI_MAX, }; -#define MSM_FRONTEND_DAI_MM_SIZE (MSM_FRONTEND_DAI_MULTIMEDIA30 + 1) -#define MSM_FRONTEND_DAI_MM_MAX_ID MSM_FRONTEND_DAI_MULTIMEDIA30 +#define MSM_FRONTEND_DAI_MM_SIZE (MSM_FRONTEND_DAI_MULTIMEDIA32 + 1) +#define MSM_FRONTEND_DAI_MM_MAX_ID MSM_FRONTEND_DAI_MULTIMEDIA32 enum { MSM_BACKEND_DAI_PRI_I2S_RX = 0,