Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 18d788af authored by Sanjana B's avatar Sanjana B
Browse files

asoc: Add support for QUAT and SEN TDM interface



Add FE and BE support for QUAT and SEN TDM interface.

Change-Id: Ic1fb96b1d5004f07849673e1e6369609652f0dc1
Signed-off-by: default avatarSanjana B <sanjb@codeaurora.org>
parent 9eab8132
Loading
Loading
Loading
Loading
+17 −17
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
 */

#include <linux/init.h>
@@ -11653,7 +11653,7 @@ static struct snd_soc_dai_driver msm_dai_q6_tdm_dai[] = {
				   SNDRV_PCM_FMTBIT_S24_LE |
				   SNDRV_PCM_FMTBIT_S32_LE,
			.channels_min = 1,
			.channels_max = 8,
			.channels_max = 16,
			.rate_min = 8000,
			.rate_max = 352800,
		},
@@ -11674,7 +11674,7 @@ static struct snd_soc_dai_driver msm_dai_q6_tdm_dai[] = {
				   SNDRV_PCM_FMTBIT_S24_LE |
				   SNDRV_PCM_FMTBIT_S32_LE,
			.channels_min = 1,
			.channels_max = 8,
			.channels_max = 16,
			.rate_min = 8000,
			.rate_max = 352800,
		},
@@ -11695,7 +11695,7 @@ static struct snd_soc_dai_driver msm_dai_q6_tdm_dai[] = {
				   SNDRV_PCM_FMTBIT_S24_LE |
				   SNDRV_PCM_FMTBIT_S32_LE,
			.channels_min = 1,
			.channels_max = 8,
			.channels_max = 16,
			.rate_min = 8000,
			.rate_max = 352800,
		},
@@ -11716,7 +11716,7 @@ static struct snd_soc_dai_driver msm_dai_q6_tdm_dai[] = {
				   SNDRV_PCM_FMTBIT_S24_LE |
				   SNDRV_PCM_FMTBIT_S32_LE,
			.channels_min = 1,
			.channels_max = 8,
			.channels_max = 16,
			.rate_min = 8000,
			.rate_max = 352800,
		},
@@ -11737,7 +11737,7 @@ static struct snd_soc_dai_driver msm_dai_q6_tdm_dai[] = {
				   SNDRV_PCM_FMTBIT_S24_LE |
				   SNDRV_PCM_FMTBIT_S32_LE,
			.channels_min = 1,
			.channels_max = 8,
			.channels_max = 16,
			.rate_min = 8000,
			.rate_max = 352800,
		},
@@ -11758,7 +11758,7 @@ static struct snd_soc_dai_driver msm_dai_q6_tdm_dai[] = {
				   SNDRV_PCM_FMTBIT_S24_LE |
				   SNDRV_PCM_FMTBIT_S32_LE,
			.channels_min = 1,
			.channels_max = 8,
			.channels_max = 16,
			.rate_min = 8000,
			.rate_max = 352800,
		},
@@ -11779,7 +11779,7 @@ static struct snd_soc_dai_driver msm_dai_q6_tdm_dai[] = {
				   SNDRV_PCM_FMTBIT_S24_LE |
				   SNDRV_PCM_FMTBIT_S32_LE,
			.channels_min = 1,
			.channels_max = 8,
			.channels_max = 16,
			.rate_min = 8000,
			.rate_max = 352800,
		},
@@ -11800,7 +11800,7 @@ static struct snd_soc_dai_driver msm_dai_q6_tdm_dai[] = {
				   SNDRV_PCM_FMTBIT_S24_LE |
				   SNDRV_PCM_FMTBIT_S32_LE,
			.channels_min = 1,
			.channels_max = 8,
			.channels_max = 16,
			.rate_min = 8000,
			.rate_max = 352800,
		},
@@ -11821,7 +11821,7 @@ static struct snd_soc_dai_driver msm_dai_q6_tdm_dai[] = {
				   SNDRV_PCM_FMTBIT_S24_LE |
				   SNDRV_PCM_FMTBIT_S32_LE,
			.channels_min = 1,
			.channels_max = 8,
			.channels_max = 16,
			.rate_min = 8000,
			.rate_max = 352800,
		},
@@ -11842,7 +11842,7 @@ static struct snd_soc_dai_driver msm_dai_q6_tdm_dai[] = {
				   SNDRV_PCM_FMTBIT_S24_LE |
				   SNDRV_PCM_FMTBIT_S32_LE,
			.channels_min = 1,
			.channels_max = 8,
			.channels_max = 16,
			.rate_min = 8000,
			.rate_max = 352800,
		},
@@ -11863,7 +11863,7 @@ static struct snd_soc_dai_driver msm_dai_q6_tdm_dai[] = {
				   SNDRV_PCM_FMTBIT_S24_LE |
				   SNDRV_PCM_FMTBIT_S32_LE,
			.channels_min = 1,
			.channels_max = 8,
			.channels_max = 16,
			.rate_min = 8000,
			.rate_max = 352800,
		},
@@ -11884,7 +11884,7 @@ static struct snd_soc_dai_driver msm_dai_q6_tdm_dai[] = {
				   SNDRV_PCM_FMTBIT_S24_LE |
				   SNDRV_PCM_FMTBIT_S32_LE,
			.channels_min = 1,
			.channels_max = 8,
			.channels_max = 16,
			.rate_min = 8000,
			.rate_max = 352800,
		},
@@ -11905,7 +11905,7 @@ static struct snd_soc_dai_driver msm_dai_q6_tdm_dai[] = {
				   SNDRV_PCM_FMTBIT_S24_LE |
				   SNDRV_PCM_FMTBIT_S32_LE,
			.channels_min = 1,
			.channels_max = 8,
			.channels_max = 16,
			.rate_min = 8000,
			.rate_max = 352800,
		},
@@ -11926,7 +11926,7 @@ static struct snd_soc_dai_driver msm_dai_q6_tdm_dai[] = {
				   SNDRV_PCM_FMTBIT_S24_LE |
				   SNDRV_PCM_FMTBIT_S32_LE,
			.channels_min = 1,
			.channels_max = 8,
			.channels_max = 16,
			.rate_min = 8000,
			.rate_max = 352800,
		},
@@ -11947,7 +11947,7 @@ static struct snd_soc_dai_driver msm_dai_q6_tdm_dai[] = {
				   SNDRV_PCM_FMTBIT_S24_LE |
				   SNDRV_PCM_FMTBIT_S32_LE,
			.channels_min = 1,
			.channels_max = 8,
			.channels_max = 16,
			.rate_min = 8000,
			.rate_max = 352800,
		},
@@ -11968,7 +11968,7 @@ static struct snd_soc_dai_driver msm_dai_q6_tdm_dai[] = {
				   SNDRV_PCM_FMTBIT_S24_LE |
				   SNDRV_PCM_FMTBIT_S32_LE,
			.channels_min = 1,
			.channels_max = 8,
			.channels_max = 16,
			.rate_min = 8000,
			.rate_max = 352800,
		},
+304 −0
Original line number Diff line number Diff line
@@ -11617,6 +11617,14 @@ static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
	MSM_BACKEND_DAI_QUAT_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia23", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA23, 1, 0, msm_routing_get_audio_mixer,
@@ -11629,6 +11637,14 @@ static const struct snd_kcontrol_new quat_tdm_tx_0_mixer_controls[] = {
	MSM_BACKEND_DAI_QUAT_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA25, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
};
static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
@@ -11696,6 +11712,14 @@ static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
	MSM_BACKEND_DAI_QUAT_TDM_RX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_RX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_RX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia20", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_RX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
@@ -11720,6 +11744,14 @@ static const struct snd_kcontrol_new quat_tdm_rx_1_mixer_controls[] = {
	MSM_BACKEND_DAI_QUAT_TDM_RX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA25, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_RX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_RX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
};
static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
@@ -11787,6 +11819,14 @@ static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
	MSM_BACKEND_DAI_QUAT_TDM_RX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_RX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_RX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia20", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_RX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
@@ -11811,6 +11851,14 @@ static const struct snd_kcontrol_new quat_tdm_rx_2_mixer_controls[] = {
	MSM_BACKEND_DAI_QUAT_TDM_RX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA25, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_RX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_RX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
};
static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
@@ -11878,6 +11926,14 @@ static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
	MSM_BACKEND_DAI_QUAT_TDM_RX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_RX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_RX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia20", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_RX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
@@ -11902,6 +11958,14 @@ static const struct snd_kcontrol_new quat_tdm_rx_3_mixer_controls[] = {
	MSM_BACKEND_DAI_QUAT_TDM_RX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA25, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_RX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_RX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
};
static const struct snd_kcontrol_new quin_tdm_rx_0_mixer_controls[] = {
@@ -12613,6 +12677,14 @@ static const struct snd_kcontrol_new sen_tdm_rx_0_mixer_controls[] = {
	MSM_BACKEND_DAI_SEN_TDM_RX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia20", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
@@ -12621,6 +12693,14 @@ static const struct snd_kcontrol_new sen_tdm_rx_0_mixer_controls[] = {
	MSM_BACKEND_DAI_SEN_TDM_RX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA21, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
};
static const struct snd_kcontrol_new sen_tdm_tx_0_mixer_controls[] = {
@@ -12688,6 +12768,22 @@ static const struct snd_kcontrol_new sen_tdm_tx_0_mixer_controls[] = {
	MSM_BACKEND_DAI_SEN_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
};
static const struct snd_kcontrol_new sen_tdm_rx_1_mixer_controls[] = {
@@ -12755,6 +12851,14 @@ static const struct snd_kcontrol_new sen_tdm_rx_1_mixer_controls[] = {
	MSM_BACKEND_DAI_SEN_TDM_RX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia20", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
@@ -12763,6 +12867,14 @@ static const struct snd_kcontrol_new sen_tdm_rx_1_mixer_controls[] = {
	MSM_BACKEND_DAI_SEN_TDM_RX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA21, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
};
static const struct snd_kcontrol_new sen_tdm_rx_2_mixer_controls[] = {
@@ -12830,6 +12942,14 @@ static const struct snd_kcontrol_new sen_tdm_rx_2_mixer_controls[] = {
	MSM_BACKEND_DAI_SEN_TDM_RX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia20", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
@@ -12838,6 +12958,14 @@ static const struct snd_kcontrol_new sen_tdm_rx_2_mixer_controls[] = {
	MSM_BACKEND_DAI_SEN_TDM_RX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA21, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
};
static const struct snd_kcontrol_new sen_tdm_rx_3_mixer_controls[] = {
@@ -12905,6 +13033,14 @@ static const struct snd_kcontrol_new sen_tdm_rx_3_mixer_controls[] = {
	MSM_BACKEND_DAI_SEN_TDM_RX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA16, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia18", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia19", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia20", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA20, 1, 0, msm_routing_get_audio_mixer,
@@ -12913,6 +13049,14 @@ static const struct snd_kcontrol_new sen_tdm_rx_3_mixer_controls[] = {
	MSM_BACKEND_DAI_SEN_TDM_RX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA21, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia28", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("MultiMedia29", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_RX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
};
static const struct snd_kcontrol_new quat_tdm_rx_2_voice_mixer_controls[] = {
@@ -18598,6 +18742,38 @@ static const struct snd_kcontrol_new mmul18_mixer_controls[] = {
	MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("SEN_TDM_TX_0", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("SEN_TDM_TX_1", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("SEN_TDM_TX_2", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA18, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("SEN_TDM_TX_3", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_3,
	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[] = {
@@ -18717,6 +18893,38 @@ static const struct snd_kcontrol_new mmul19_mixer_controls[] = {
	MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("SEN_TDM_TX_0", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("SEN_TDM_TX_1", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("SEN_TDM_TX_2", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA19, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("SEN_TDM_TX_3", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_3,
	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[] = {
@@ -19593,6 +19801,38 @@ static const struct snd_kcontrol_new mmul28_mixer_controls[] = {
	MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("SEN_TDM_TX_0", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("SEN_TDM_TX_1", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("SEN_TDM_TX_2", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA28, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("SEN_TDM_TX_3", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_3,
	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[] = {
@@ -19712,6 +19952,38 @@ static const struct snd_kcontrol_new mmul29_mixer_controls[] = {
	MSM_BACKEND_DAI_AFE_LOOPBACK_TX,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("QUAT_TDM_TX_0", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("QUAT_TDM_TX_1", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("QUAT_TDM_TX_2", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("QUAT_TDM_TX_3", SND_SOC_NOPM,
	MSM_BACKEND_DAI_QUAT_TDM_TX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("SEN_TDM_TX_0", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_0,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("SEN_TDM_TX_1", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_1,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("SEN_TDM_TX_2", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_2,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
	SOC_DOUBLE_EXT("SEN_TDM_TX_3", SND_SOC_NOPM,
	MSM_BACKEND_DAI_SEN_TDM_TX_3,
	MSM_FRONTEND_DAI_MULTIMEDIA29, 1, 0, msm_routing_get_audio_mixer,
	msm_routing_put_audio_mixer),
};
static const struct snd_kcontrol_new mmul30_mixer_controls[] = {
@@ -26382,6 +26654,14 @@ static const struct snd_soc_dapm_route intercon[] = {
	{"MultiMedia18 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
	{"MultiMedia18 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"},
	{"MultiMedia18 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"},
	{"MultiMedia18 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
	{"MultiMedia18 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
	{"MultiMedia18 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
	{"MultiMedia18 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
	{"MultiMedia18 Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"},
	{"MultiMedia18 Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"},
	{"MultiMedia18 Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"},
	{"MultiMedia18 Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"},
	{"MultiMedia19 Mixer", "TX_CDC_DMA_TX_0", "TX_CDC_DMA_TX_0"},
	{"MultiMedia19 Mixer", "TX_CDC_DMA_TX_1", "TX_CDC_DMA_TX_1"},
@@ -26392,6 +26672,14 @@ static const struct snd_soc_dapm_route intercon[] = {
	{"MultiMedia19 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
	{"MultiMedia19 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"},
	{"MultiMedia19 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"},
	{"MultiMedia19 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
	{"MultiMedia19 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
	{"MultiMedia19 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
	{"MultiMedia19 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
	{"MultiMedia19 Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"},
	{"MultiMedia19 Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"},
	{"MultiMedia19 Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"},
	{"MultiMedia19 Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"},
	{"MultiMedia28 Mixer", "TX_CDC_DMA_TX_0", "TX_CDC_DMA_TX_0"},
	{"MultiMedia28 Mixer", "TX_CDC_DMA_TX_1", "TX_CDC_DMA_TX_1"},
@@ -26402,6 +26690,14 @@ static const struct snd_soc_dapm_route intercon[] = {
	{"MultiMedia28 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
	{"MultiMedia28 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"},
	{"MultiMedia28 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"},
	{"MultiMedia28 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
	{"MultiMedia28 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
	{"MultiMedia28 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
	{"MultiMedia28 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
	{"MultiMedia28 Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"},
	{"MultiMedia28 Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"},
	{"MultiMedia28 Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"},
	{"MultiMedia28 Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"},
	{"MultiMedia29 Mixer", "TX_CDC_DMA_TX_0", "TX_CDC_DMA_TX_0"},
	{"MultiMedia29 Mixer", "TX_CDC_DMA_TX_1", "TX_CDC_DMA_TX_1"},
@@ -26412,6 +26708,14 @@ static const struct snd_soc_dapm_route intercon[] = {
	{"MultiMedia29 Mixer", "AFE_LOOPBACK_TX", "AFE_LOOPBACK_TX"},
	{"MultiMedia29 Mixer", "VA_CDC_DMA_TX_0", "VA_CDC_DMA_TX_0"},
	{"MultiMedia29 Mixer", "VA_CDC_DMA_TX_1", "VA_CDC_DMA_TX_1"},
	{"MultiMedia29 Mixer", "QUAT_TDM_TX_0", "QUAT_TDM_TX_0"},
	{"MultiMedia29 Mixer", "QUAT_TDM_TX_1", "QUAT_TDM_TX_1"},
	{"MultiMedia29 Mixer", "QUAT_TDM_TX_2", "QUAT_TDM_TX_2"},
	{"MultiMedia29 Mixer", "QUAT_TDM_TX_3", "QUAT_TDM_TX_3"},
	{"MultiMedia29 Mixer", "SEN_TDM_TX_0", "SEN_TDM_TX_0"},
	{"MultiMedia29 Mixer", "SEN_TDM_TX_1", "SEN_TDM_TX_1"},
	{"MultiMedia29 Mixer", "SEN_TDM_TX_2", "SEN_TDM_TX_2"},
	{"MultiMedia29 Mixer", "SEN_TDM_TX_3", "SEN_TDM_TX_3"},
	{"MultiMedia30 Mixer", "TX_CDC_DMA_TX_0", "TX_CDC_DMA_TX_0"},
	{"MultiMedia30 Mixer", "TX_CDC_DMA_TX_1", "TX_CDC_DMA_TX_1"},
+2 −0
Original line number Diff line number Diff line
@@ -300,6 +300,8 @@ static struct afe_clkinfo_per_port clkinfo_per_port[] = {
		MCLK_SRC_INT, Q6AFE_EXT_MCLK_FREQ_DEFAULT, ""},
	{ AFE_PORT_ID_QUINARY_TDM_RX,
		MCLK_SRC_INT, Q6AFE_EXT_MCLK_FREQ_DEFAULT, ""},
	{ AFE_PORT_ID_SENARY_TDM_RX,
		MCLK_SRC_INT, Q6AFE_EXT_MCLK_FREQ_DEFAULT, ""},
	{ AFE_PORT_ID_PRIMARY_SPDIF_RX,
		MCLK_SRC_INT, Q6AFE_EXT_MCLK_FREQ_DEFAULT, ""},
	{ AFE_PORT_ID_PRIMARY_SPDIF_TX,