Loading asoc/msm-dai-fe.c +39 −1 Original line number Diff line number Diff line // 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. */ Loading Loading @@ -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) Loading asoc/msm-pcm-routing-v2.c +104 −0 Original line number Diff line number Diff line Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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), Loading Loading @@ -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"}, Loading @@ -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"}, Loading @@ -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"}, Loading @@ -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"}, Loading @@ -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"}, Loading @@ -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"}, Loading @@ -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"}, Loading @@ -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"}, Loading @@ -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"}, Loading @@ -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"}, asoc/msm-pcm-routing-v2.h +5 −3 Original line number Diff line number Diff line /* 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 Loading Loading @@ -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, Loading @@ -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, Loading Loading
asoc/msm-dai-fe.c +39 −1 Original line number Diff line number Diff line // 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. */ Loading Loading @@ -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) Loading
asoc/msm-pcm-routing-v2.c +104 −0 Original line number Diff line number Diff line Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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[] = { Loading Loading @@ -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), Loading Loading @@ -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"}, Loading @@ -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"}, Loading @@ -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"}, Loading @@ -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"}, Loading @@ -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"}, Loading @@ -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"}, Loading @@ -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"}, Loading @@ -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"}, Loading @@ -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"}, Loading @@ -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"},
asoc/msm-pcm-routing-v2.h +5 −3 Original line number Diff line number Diff line /* 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 Loading Loading @@ -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, Loading @@ -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, Loading